PHP在另一个命名空间的类中的方法内使用命名空间类

PHP在另一个命名空间的类中的方法内使用命名空间类,php,class,namespaces,instantiation,Php,Class,Namespaces,Instantiation,是否有可能以某种方式在命名空间内实例化一个类,在另一个命名空间内的另一个类中实例化一个方法?从一个变量实例化请求的类 示例: 要从loader类加载的类: 装载机类别: 很抱歉,这个公式有点混乱,但我想不出更好的方法来问这个问题 谢谢。这是加载名称空间的一般方法: 然而,有一种更流行的方法是使用 下载composer.phar并在项目目录中运行:php composer.phar init 跟随互动 在项目根目录中,创建一个src目录,然后将其添加到composer.json文件中,该文件生成

是否有可能以某种方式在命名空间内实例化一个类,在另一个命名空间内的另一个类中实例化一个方法?从一个变量实例化请求的类

示例

要从loader类加载的类:

装载机类别:

很抱歉,这个公式有点混乱,但我想不出更好的方法来问这个问题


谢谢。

这是加载名称空间的一般方法:

然而,有一种更流行的方法是使用

  • 下载composer.phar并在项目目录中运行:
    php composer.phar init
  • 跟随互动
  • 在项目根目录中,创建一个
    src
    目录,然后将其添加到composer.json文件中,该文件生成:
    “autoload”:{“psr-0”:{“:“src/”}}
  • 您的composer.json文件现在应该如下所示:

    {
        "name": "acme/sample",
        "authors": [
            {
                "name": "Person",
                "email": "person@example.com"
            }
        ],
        "minimum-stability": "dev",
        "autoload": {
            "psr-0": { "": "src/" }
        },
        "require": {
    
        }
    }
    
  • 运行:
    php composer.phar安装
    ,它将生成一个供应商目录和一个自动加载脚本

  • 创建主加载php文件,并在其中包含autoload.php文件

  • 现在,src目录中的名称空间和供应商中的任何导入库都将向您的应用程序公开


    签出
    symfony/symfony standard
    查看完整的框架示例。

    似乎效率低下,为什么要这样做?因为我有一个路由器类,我想加载当前页面。但是一个变通方法或建议另一种方法会很好
    namespace system/loader;
    
    class loader
    {
        private $vars;
    
        private function __construct($vars)
        {
            $this->vars = $vars;
        }
    
        private function load_class()
        {
            require(CLASSES . $this->vars['namespace'] . '/' . $this->vars['class'] . ".php");
    
            use $this->vars['namespace'];
            return new \$this->vars['namespace']\$this->vars['class']();
        }
    }
    
    {
        "name": "acme/sample",
        "authors": [
            {
                "name": "Person",
                "email": "person@example.com"
            }
        ],
        "minimum-stability": "dev",
        "autoload": {
            "psr-0": { "": "src/" }
        },
        "require": {
    
        }
    }