在类

时间:2017-08-28 08:08:26

标签: php

这是一个非常基本的问题,我有这个类说我可以定义自己的处理程序,它将改变下面例子中的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();     $类 - > callName( “强尼”);

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

1 个答案:

答案 0 :(得分:0)

这些是我想到的方法,你应该选择最合适的方式:

  • 如果存在某种setter,initializer或magic setter方法并使用它,请检查该类的其余方法。
  • 扩展MyClass并在那里设置$callHandler
  • 扩展MyClass并创建一些静态初始化函数,之后您将调用它来设置值。
  • 使用反射。

您可以查看这些问题,它们是相似的:How to initialize static variablesDynamically populating a static variable in PHP