请耐心等待,因为它会有点长。:)
好吧,我认为我们可以通过 PHP 的overloading
概念来实现这一点,正如你们大多数人所知,它与其他面向对象的语言完全不同。
从 PHP 手册的重载页面 - Overloading in PHP provides means to dynamically "create" properties and methods. These dynamic entities are processed via magic methods one can establish in a class for various action types.
( http://www.php.net/manual/en/language.oop5.overloading.php )
这种重载魔法大部分依赖于 PHP 的魔法方法
如果你看到魔法方法的列表,这里可以帮助我们的是__call()
每次调用不存在的类方法时都会调用魔术方法 __call。
这将帮助我们防止抛出任何错误/设置任何自定义消息。因此,这是一个我们可以用来解决上述问题的示例。
<?php
class Test
{
private $arr = array( 'funcone', 'functwo' );
public function __call( $func_name, $func_args ) {
echo "Method called: " . $func_name . "\n";
echo "Arguments passed: " . $func_args . "\n";
// this will call the desired function.
call_user_func( array( $this, $this->arr[ $func_args ] ) );
}
}
$obj = new Test;
// run the first function in the array
$obj->runTest(0);
?>
希望有帮助。如果这不起作用,我相信它可以通过一些试验和错误进行调整。(现在,我说的是 PHP,对吗?调整...;))