foo();
相当于条件编译了,从这里我们可以猜测到,为什么上文中outer()调用之前,inner()是无法调用的。因为inner在outer()调用之前还未被“编译”(只是猜测,未深入研究)。
函数动态调用
函数名可以是变量名。
function foo()
{
echo "call foo";
}
$func='foo';
$func();
此方式比较危险,建议使用白名单方式将可用的函数名写在配置文件中,或者函数名都有统一前缀,比如$func="act_".$funcName;。另外在调用之前可用function_exists ($funcName)来检查函数是否存在。
通过内置函数调用函数,call_user_func(callback function ,[, mixed parameter [, mixed ...]] ),对于不确定的函数名,确定的参数可以使用此函数调用,如果参数也不确定可以通过call_user_func_array( callback function, array param_arr )
另外,可以通过get_defined_functions()来获取所有已定义的函数(注意是所有,包括内置函数)
调用类的方法则传入一个数组作为参数,此数组第一个元素是实例或类名,第二个元素是方法名:
class myclass
{
public $age=21;
function echo_age()
{







