{$_GET['action']}();所有这些牙套是什么意思?



有人可以帮忙理解 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"。所以这就是上面的行代码的作用。非常感谢您的帮助。这对我帮助很大

相关内容

  • 没有找到相关文章

最新更新