在不同的命名空间中实例化一个类

时间:2014-10-25 18:27:38

标签: php class namespaces

我遇到了命名空间冲突。我的类文件看起来像这样(简而言之)。我写了评论stuck here我遇到了问题。

<?php
//file location - /core/controller/EH_Loader.php

namespace core\controller;

class EH_Loader {

    //some public functions here...

    private function _create_instance($type, $class, $params, $method_name, $data) {


        //create a reflection class so that we can pass parameters to the constructor


        // class_alias('Application\Controller\\'.$class, $class, FALSE);

        $ref_class = new \ReflectionClass(new $class()); //stuck here - more explainiantion below

        if (is_array($params) && sizeof($params) > 0) {

            $instance = $ref_class->newInstanceArgs($params);

        } else {

            $instance = new $class();
        }
        $this->logger->info("$type object created for $class class");

        //call the method along with parameters, if they exist !

        if (method_exists($instance, $method_name)) {

             call_user_func_array(array($instance, $method_name), $data);
        }

        return $instance;
    }
}

new $class位于不同的namcespace中,位于/application/controller/test.php内。我无法通过psr-4加载该文件。我怎样才能做到这一点。另外,我如何在全局命名空间中创建$class文件。

编辑:问题有点严重。 new $class看起来像这样。它扩展了另一个具有相同名称空间namespace core\controller;

的类
//namespace application\controller;
class test extends EH_Base {

    function __construct() {
        parent::__construct();
    }
}

0 个答案:

没有答案