【问题标题】:Symfony2 composer vendor namspace not found找不到 Symfony2 作曲家供应商名称空间
【发布时间】:2014-04-27 08:33:03
【问题描述】:

我正在尝试使用我自己创建的供应商库。现在我不能把它放在 GIT 或 SVN 中,所以我试图让它在没有的情况下运行。

这是我的目录结构(借用下面的答案):

vendor/
    ISTlibraries/
        Saml2Handler/
            src/
                Saml2Handler/

在我的 composer.json 我添加了

"autoload": {
    "psr-0": {
        "": "src/",
        "Saml2Handler": "vendor/ISTlibraries/Saml2Handler/src/"
    }
},

vendor/ISTlibraries/Saml2Handler/src/ 是我的源代码的路径。我想要获取的类称为 Saml2Controller,它定义了这个命名空间

namespace Saml2Handler;

当我尝试从我的 symfony2 控制器内部启动类时,我得到一个错误:

FatalErrorException: Error: Class 'Saml2Handler\Saml2Controller' not found in ...

在控制器中,我尝试了一个简单的新 Saml2Controller 并编写了

use Saml2Handler\Saml2Controller;

我哪里错了?

【问题讨论】:

  • 在你定义的目录下是否有一个名为Saml2Controller.php的文件?
  • 是的,在 src 中有一个 Saml2Controller.php,里面的类被称为 Saml2Controller,命名空间为 Saml2Handler;
  • 你跑composer install了吗?
  • 有什么方法可以确认自动加载器确实已正确更新?

标签: php symfony namespaces composer-php


【解决方案1】:

该错误是预期的。我相信你需要以下目录结构:

vendor/
    ISTlibraries/
        Saml2Handler/
            src/
                Saml2Handler/ <--- you don't have this
                    Saml2Controller.php

...为了在您的Saml2Handler.php 中包含namespace Saml2Handler

【讨论】:

  • 这就是我的结构。虽然我没有任何 Saml2Handler.php 文件...我需要那个吗?
  • https://getcomposer.org/doc/04-schema.md#psr-0 中的示例以“\\”结束 psr-0 命名空间。你可以试试吗?
  • 终于!看起来它修复了它。你能给我解释一下为什么吗??我很难理解它。
猜你喜欢
  • 2014-10-23
  • 2016-08-30
  • 2018-09-11
  • 1970-01-01
  • 2015-02-02
  • 2016-12-18
  • 2018-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多