当前位置:  开发笔记 > 编程语言 > 正文

如何在PHP中动态调用类方法?

如何解决《如何在PHP中动态调用类方法?》经验,为你挑选了3个好方法。

如何在PHP中动态调用类方法?类方法不是静态的.看起来

call_user_func(...)

仅适用于静态功能?

谢谢.



1> Peter Bailey..:

它适用于两种方式 - 您需要使用正确的语法

//  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)


这些:http://stackoverflow.com/questions/251485/dynamic-class-method-invocation-in-php

2> David..:

选项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比使用上面列出的任一选项慢几个数量级.



3> Jeremy Ruten..:

你的意思是这样的?

$function();

?>

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有