如何使用类属性调用静态方法?

时间:2014-01-22 12:19:04

标签: php class variables properties static-methods

A类中有一个属性$ modelName,可以使用$ this-> modelName在此类中访问。

此属性包含另一个类B的名称。

我想调用B类的静态方法而不是创建B的对象。

工作代码:

$b = $this->modelName;
$b::model()->findAll();

问题: 如何调用model() - > findAll()不使用$ b?

我尝试了$this->modelName::model()->findAll();,但它无效。

1 个答案:

答案 0 :(得分:0)

做到:

 class A{
   public $modelName = 'B';

   function callB(){
     call_user_func(array($this->modelName, 'model'))->findAll();
   }
 }

 class B{
   private  static $model = null;

   static function model(){

     if (!self::$model) {
        self::$model = new B();
     }
     return self::$model;
  }

   function findAll(){
      print  __CLASS__.' method `findAll()`';
   }
 }

$A = new A;
$A->callB();

// B method `findAll()`