PHP可变函数学习小结
在上篇文章给大家介绍了php可变变量,今天通过本篇文章给大家介绍php可变函数,具体详情如下。
PHP支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。
可变函数不能用于例如echo,print,unset(),isset(),empty(),include,require以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。
Example#1可变函数示例
<?php
functionfoo(){
echo"Infoo()<br/>\n";
}
functionbar($arg=''){
echo"Inbar();argumentwas'$arg'.<br/>\n";
}
//使用echo的包装函数
functionechoit($string)
{
echo$string;
}
$func='foo';
$func();//Thiscallsfoo()
$func='bar';
$func('test');//Thiscallsbar()
$func='echoit';
$func('test');//Thiscallsechoit()
?>
也可以用可变函数的语法来调用一个对象的方法。
<?php
classFoo
{
functionVariable()
{
$name='Bar';
$this->$name();//ThiscallstheBar()method
}
functionBar()
{
echo"ThisisBar";
}
}
$foo=newFoo();
$funcname="Variable";
$foo->$funcname();//Thiscalls$foo->Variable()
?>
当调用静态方法时,函数调用要比静态属性优先:
Example#3Variable方法和静态属性示例
<?php
classFoo
{
static$variable='staticproperty';
staticfunctionVariable()
{
echo'MethodVariablecalled';
}
}
echoFoo::$variable;//Thisprints'staticproperty'.Itdoesneeda$variableinthisscope.
$variable="Variable";
Foo::$variable();//Thiscalls$foo->Variable()reading$variableinthisscope.
?>
可以使用可变函数的方法列表如下:
<?php array_diff_assoc() array_diff_key() array_diff_uassoc() array() array_intersect_ukey() array_map() array_merge() array_merge_recursive() array_multisort() array_push() array_replace() array_replace_recursive() array_unshift() call_user_func() call_user_method() compact() dba_open() dba_popen() echo() forward_static_call() fprintf() fscanf() httprequestpool_construct() ibase_execute() ibase_set_event_handler() ibase_wait_event() isset() list() maxdb_stmt_bind_param() maxdb_stmt_bind_result() mb_convert_variables() newt_checkbox_tree_add_item() newt_grid_h_close_stacked() newt_grid_h_stacked() newt_grid_v_close_stacked() newt_grid_v_stacked() newt_win_choice() newt_win_entries() newt_win_menu() newt_win_message() newt_win_ternary() pack() printf() register_shutdown_function() register_tick_function() session_register() setlocale() sprintf() sscanf() unset() var_dump() w32api_deftype() w32api_init_dtype() w32api_invoke_function() wddx_add_vars() wddx_serialize_vars()
下面给大家介绍下PHPMath函数
phpmath简介
数学(Math)函数能处理integer和float范围内的值。
phpmath函数
PHP:指示支持该函数的最早的PHP版本。