Php 从 $_GET[] 元素创建命名空间路径并使用它

标签 php namespaces get

我想要这样的网址:example.com/?module=index&controller=index&action=hello
通过 $_GET[] 获取值,然后创建命名空间路径,如 application\modules\index\controllers\IndexController 然后

use application\modules\index\controllers\IndexController as IndexController;
$IndexController = new IndexController;
$IndexController->hello();

例如,但是当我尝试以随机方式创建路径时 -> 错误和 .. 我不知道该怎么做,请帮忙!

最佳答案

正如我在评论中提到的:你不能在 use 语句中使用变量,你必须在创建新实例时在变量中使用完全命名空间的类名。

所以它看起来像这样:

$module = $_GET['module'];
$ctrl = $_GET['controller'];
//Remember to use double backslashes in strings
$class = "application\\modules\\{$module}\\controllers\\{$ctrl}Controller";

$controller = new $class;
$controller->{$action}();

关于Php 从 $_GET[] 元素创建命名空间路径并使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13788612/

相关文章:

php - Nanopb - 用 PHP 解码

php - 未找到 Silex 路由

WordPress URL 路由问题

c++ - 在同一个函数中使用不同的命名空间

c++ - 不相关的删除运算符改变了重载决议的行为

php - 如何从收藏夹表中调用项目

JQuery - 有没有办法减少对 dom 的调用

javascript - 我正在尝试让 jquery 插件在我的 wordpress 网站上工作

php - Doctrine 2.4 PreUpdate获取原始数据返回新数据?

java - Jaxb:根元素中的 xsi 被替换为 ns2