Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php从$\u GET[]元素创建名称空间路径并使用它_Php_Namespaces_Get - Fatal编程技术网

Php从$\u GET[]元素创建名称空间路径并使用它

Php从$\u GET[]元素创建名称空间路径并使用它,php,namespaces,get,Php,Namespaces,Get,我想从url中获得如下内容:example.com/?module=index&controller=index&action=hello 要通过$\u get[]获取值,然后创建名称空间路径,如application\modules\index\controllers\IndexController,然后 use application\modules\index\controllers\IndexController as IndexController; $IndexController

我想从url中获得如下内容:example.com/?module=index&controller=index&action=hello 要通过$\u get[]获取值,然后创建名称空间路径,如application\modules\index\controllers\IndexController,然后

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

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

更多的代码可能有用,但这有帮助吗

namespace Foobar;

class Foo {
    static public function test() {
        echo "Hello";
    }
}

call_user_func(__NAMESPACE__ .'\Foo::'.$_GET['action']); 
// or
call_user_func(array(__NAMESPACE__ .'\Foo', $_GET['action'])); 

正如我在注释中提到的:在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}();

你能展示一下你试过的吗?对于这方面的一些例子,您可能会考虑查看SyfYNY2或ZAND框架路由组件,试图用$$GET(“模块”)替换模块和控制器的名称,出现控制器和语法错误,然后尝试将所有路径放入字符串中,然后键入$NameSpPACEPATH…同样的狗屎..演示如何尝试创建此命名空间路径。另外,您不能在
use
语句中使用变量,在创建新实例时,必须在变量中使用完全命名空间的类名;只是为了从变量中的完全名称空间类名创建实例?没有使用?