2017-08-28 97 views
-1

类call_user_func这是很基本的问题,我有这个类,说我可以定义自己的处理程序,这将改变在下面的例子中callName()功能:定义处理程序在

class MyClass 
{ 
protected static $callHandler; 

public static function callName($name){ 
     if (static::$callHandler) { 
      return call_user_func(static::$callHandler, $name); 
     } 
    print $name; 
    } 
} 

我知道我可以做这个: $ class = new MyClass(); $ class-> callName(“Jonny”);

但是,如何在call_user_func中定义我自己的$ callhandler并更改结果?

+1

'MyClass的:: callName()'是[静态方法](http://php.net/manual/en/language.oop5.static.php)。你应该把它叫做MyClass :: callName(“Jonny”)'。 – axiac

+0

感谢您的回答@axiac,告诉我如何定义$ callHandler – San

+0

接收一个参数可以作为'$ callHandler'任何功能。尽管如此,你必须添加一个(静态)方法给你的类来设置它。 – axiac

回答

0

这些都是来我心中的方式,你应该选择最合适的一个:

  • 检查的类的方法休息,如果某种二传手,初始化或魔法setter方法的存在,用它。
  • 在此延伸MyClass并设置$callHandler
  • 扩展MyClass,并创建一些静态初始化函数,你会打电话给事后的设定值。
  • 使用反射。

你可以检查这些SO问题,他们很相似:How to initialize static variablesDynamically populating a static variable in PHP

相关问题