如何通过变量调用Joomla组件方法?

时间:2014-07-09 15:14:04

标签: php variables methods joomla call

$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.

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果您的代码示例是正确的,那么最有可能的答案就是您要调用名称为$variable的方法,但您要forgotten the () at the end。即你的主叫线应为:

$this->items = $model->$variable();

如果,这不是拼写错误,而您确实打算拨打property of the class,那么$variable的内容可能不具备匹配的属性/ $model中的方法。

使用变量properptymethod名称时,您最好通过简单检查existence of the propertymethod来解决您的问题,以便及早发现问题。 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 ...
}