在我的自定义模块控制器中,我有一种情况要创建具有已发布属性的函数
$params = $this->getRequest()->getParams();
$details = Mage::getModel('custom/custom')->load($params['id']);
$params
阵列看起来像这个
Array
(
[product_id] => 3
[id] => 82
[value] => 20
)
$params['value']
是我在下面的数组中的列名之一
$details
阵列看起来像这个
Array
(
[id] => 82
[18] => 1
[18_price] => 100.000
[19] => 4
[19_price] => 200.000
[20] => 5
[20_price] => 100.000
[21] => 8
[21_price] => 200.000
[22] => 0
[22_price] => 0.000
.
.
.
.
[product_id] => 3
)
如果我使用$details->get20()
,我将从上面的数组中获得$details['20']
的值,即5,
每次我不能使用像$details->get20()
、$details->get21()
、$details->get22()
这样的标准函数,因为我将有20到30列这样的列,所以我想使用$params['value']
创建这个函数,这不仅仅是为了再次获得方法,我必须在逻辑的几行之后在同一位置设置值。
为此,我尝试了以下方法
$details->get.''.$params['value']();
$details->get.$params['value']();
但它没有用致命错误:调用未定义的函数20()
在我的情况下,我该如何做到这一点?
在尝试调用变量之前,必须将其设置为函数名:
$function = 'get' . $params['value'];
$details->$function();
或者你可以这样做:
$details->{'get' . $params['value']}();