命名空间和变量之间的PHP OOP语法

时间:2015-02-21 17:01:58

标签: php

我正在构建一个前端控制器,我需要在$ _GET数组中使用params的调用类。所以,当我在index.php

中尝试这个时
<?php
        try{
            if(filter_input_array(INPUT_GET)!==FALSE OR filter_input_array(INPUT_GET)!==FALSE){
                $get = ['module'=>[FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_STRIP_HIGH],
                        'method'=>[FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_STRIP_HIGH],
                        'args'=>[FILTER_SANITIZE_SPECIAL_CHARS, FILTER_FLAG_STRIP_HIGH]];
                $args = \filter_input_array(\INPUT_GET, $get);

                //here is the problem syntax
                echo (new \controller\$args['module']())->$args['method']($args['args']);
            }
        } catch (Exception $ex) {
            echo "page not found";
        }
    ?>

PHP解析器给我一个错误语法(期望的标识符)。

那么,我该如何解决这个问题呢?你知道一些可能的语法或不同的方法吗?

我想要与OOP合作。谢谢大家(对不起我的英语,我的母语是西班牙语)。

1 个答案:

答案 0 :(得分:0)

以下是类名,方法名和参数是动态http://goo.gl/Oi6kCU

的示例
<?php
namespace foo;
class Cat { 
  function speak($word) {echo "meoow $word\n";}
}
class Dog {
  function speak($word) {echo "woof $word\n";}
}

function callInFoo($cls, $method, $arg) {
    $fullName = "foo\\" . $cls;
    $obj = new  $fullName;
    return $obj->$method($arg);
}

callInFoo("Cat", "speak", "Hello");
callInFoo("Dog", "speak", "World");

输出

meoow Hello
woof World