有人可以帮助理解php中的这种语法技巧:
enter $controller->{$_GET['action']}();
我在谈论
{$_GET['action']}();
我正在尝试了解此博客http://r.je/mvc-in-php.html上的mvc模式,但如果我能理解这种语法技巧,它真的很有帮助......
由于
答案 0 :(得分:3)
这是一种动态访问对象成员的方法。
$key = 'test';
$object->{$key}
相当于:
$object->test
在您的示例中,某人正在运行$_GET['action']
上action
(查询字符串中的$controller
变量)指定的任何方法。
请参阅手册中的variable variables和variable functions。
答案 1 :(得分:3)
唉。这是丑陋的代码。就像真正难看的代码一样。
所以你有一个对象$controller
,他们正在使用$_GET['action']
来调用$controller
内的方法。所以说你有page.php?action=call
。它与调用
$controller->call();
这是一个非常糟糕的主意。您不应该接受原始的不受信任的数据来执行代码。那里有大量的安全漏洞。
答案 2 :(得分:1)
它接受通过action
查询参数传入的任何字符串,并尝试将其作为函数执行。 e.g。
http://example.com/index.php?action=whatever
最终将等同于
$controller->whatever();
代码中的。
答案 3 :(得分:0)
非常感谢你的帮助。所以当我这样做时:
$controller->{$_GET ['action']} ();
我正在动态访问对象的成员。在这种情况下,它是控制器。在本教程中,已调用的方法是“textclicked”。所以这就是那里的行代码。非常感谢你的帮助。这对我很有帮助