【问题标题】:Class Not Found using PSR-4使用 PSR-4 找不到类
【发布时间】:2015-12-10 22:26:52
【问题描述】:

我的 composer.json 文件中有一个 PSR-4 规范,如下所示

"autoload" : {
    "psr-4" : {
        "MyMVC\\" : "app/"
    }
},

以上是我的目录结构。在我的 Core/Config.php 文件中,我有位于命名空间MyMVC\Core 下的类 Config。 (仅以 Config 类为例,所有类都一样)。

现在在我的 Config/config.php 文件中,我使用下面的代码

<?php
use MyMVC\Core;

Config::$config['base_url'] = 'http://localhost/mymvc';

但这给了我找不到类配置的错误。如果我使用MyMVC\Core\Config;,问题可以解决。但它应该在不显式使用 Config 的情况下工作。由于框架用户可以添加一些应该自动加载的文件。

谢谢

【问题讨论】:

    标签: php autoloader psr-4


    【解决方案1】:

    use 原语导入或别名命名空间或类。正如manual 所说:

    PHP 支持三种别名或导入:类名别名、接口名别名和命名空间名别名。 PHP 5.6+ 还允许别名或导入函数和常量名称。

    您的 use 语句是“为命名空间命名”。所以

    use MyMVC\Core;
    

    等同于:

    use MyMVC\Core as Core;
    

    因此在您的代码中:

    Config::$config['base_url'] = 'http://localhost/mymvc';
    

    应该是:

    Core\Config::$config['base_url'] = 'http://localhost/mymvc';
    

    【讨论】:

      猜你喜欢
      • 2016-11-18
      • 2017-11-20
      • 2016-03-22
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      • 2015-12-16
      • 1970-01-01
      • 2014-07-03
      相关资源
      最近更新 更多