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