我有这个功能:
$request = array("setNewDoc", "setNewFile");
foreach($request as $key => $val) {
$result = $controller->setNewDoc($key);
$smarty->assign('result', $result);
$index = TPL_DIR . 'docs.tpl';
}
是否可以通过在我的指针中添加变量来使这个循环动态化?我的数组中的$keys
也是函数的名称。
赞$controller->$variable($key);
像这样(伪代码)
$result = array("setNewDoc", "setNewFile");
foreach($request as $key => $val) {
$result = $controller->set$key($request);
$smarty->assign('result', $result);
// $key = setNewDoc or setNewFile
$index = TPL_DIR . $key . '.tpl';
}
答案 0 :(得分:0)
是的,这是可能的,事实上很简单:
<?php
class MyClass {
function myMethod()
{
echo "Hello World";
}
}
$obj = new MyClass();
$dynamicVar = 'Method';
$obj->{'my' . $dynamicVar}();
用大括号括起你的方法名,你可以在里面做一些字符串连接。一旦处理了括号内的所有内容,它最终将用作您的方法名称。
对于您的特定用例,您可以编写类似
的内容<?php
$result = array("setNewDoc", "setNewFile");
foreach($request as $key => $val) {
$result = $controller->{'set' . $key}($request);
$smarty->assign('result', $result);
// $key = setNewDoc or setNewFile
$index = TPL_DIR . $key . '.tpl';
}
答案 1 :(得分:0)
是的,你可以。 您可以使用它来转换新对象或访问属性。
例如
$ classname = foo; $丙=名;
$ myObject = new $ classname(); $ myObject-&gt; {$ prop}或函数:$ myObject-&gt; {$ prop}()
您甚至可以预约对象的属性
foreach($ myObject as $ key =&gt; $ value){ print $ key //将是名字 print $ value //将是属性的值 }