A类中有一个属性$ modelName,可以使用$ this-> modelName在此类中访问。
此属性包含另一个类B的名称。
我想调用B类的静态方法而不是创建B的对象。
工作代码:
$b = $this->modelName;
$b::model()->findAll();
问题: 如何调用model() - > findAll()不使用$ b?
我尝试了$this->modelName::model()->findAll();
,但它无效。
答案 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()`