如何在PHP中动态调用类方法?类方法不是静态的.看起来
call_user_func(...)
仅适用于静态功能?
谢谢.
它适用于两种方式 - 您需要使用正确的语法
// Non static call call_user_func( array( $obj, 'method' ) ); // Static calls call_user_func( array( 'ClassName', 'method' ) ); call_user_func( 'ClassName::method' ); // (As of PHP 5.2.3)
选项1
// invoke an instance method $instance = new Instance(); $instanceMethod = 'bar'; $instance->$instanceMethod(); // invoke a static method $class = 'NameOfTheClass'; $staticMethod = 'blah'; $class::$staticMethod();
选项2
// invoke an instance method $instance = new Instance(); call_user_func( array( $instance, 'method' ) ); // invoke a static method $class = 'NameOfTheClass'; call_user_func( array( $class, 'nameOfStaticMethod' ) ); call_user_func( 'NameOfTheClass::nameOfStaticMethod' ); // (As of PHP 5.2.3)
选项1比选项2更快,因此尝试使用它们,除非您不知道要将多少个参数传递给方法.
编辑:以前的编辑器在清理我的答案方面做得很好,但删除了call_user_func_array的提及,这与call_user_func不同.
PHP有
mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
http://php.net/manual/en/function.call-user-func.php
和
mixed call_user_func_array ( callable $callback , array $param_arr )
http://php.net/manual/en/function.call-user-func-array.php
使用call_user_func_array比使用上面列出的任一选项慢几个数量级.
你的意思是这样的?
$function(); ?>