$model = JModelLegacy::getInstance('NameOfModel', $prefix = 'my_componentModel', $config = array());
通常情况下,我会像这样调用模型方法:
$this->items = $model->my_method();
在我的情况下,我需要通过变量调用方法,因为它是动态的:
$this->items = $model->$variable; ...but this won't work.
$this->items = $model->{$variable}; ...this also won't work.
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
如果您的代码示例是正确的,那么最有可能的答案就是您要调用名称为$variable
的方法,但您要forgotten the ()
at the end。即你的主叫线应为:
$this->items = $model->$variable();
如果,这不是拼写错误,而您确实打算拨打property
of the class,那么$variable
的内容可能不具备匹配的属性/ $model
中的方法。
使用变量properpty
或method
名称时,您最好通过简单检查existence of the property或method来解决您的问题,以便及早发现问题。 e.g。
// Check $model has a method $variable
if (method_exists($model, $variable)
{
$this->items = $model->$variable();
}
else
{
... raise a error/warning message here ...
}
// Check $model has a property $variable
if (property_exists($model, $variable)
{
$this->items = $model->$variable;
}
else
{
... raise a error/warning message here ...
}