使用 composer 的 PSR-4 自动加载机问题

Problem with PSR-4 Autoloader using composer

提问人:Salvio 提问时间:7/6/2020 最后编辑:PhilSalvio 更新时间:7/6/2020 访问量:100

问:

我有这个目录结构:

  src
   - PrintXMLInfo.php
   - PrintListInfo.php
   - PrintInformation.php

  vendor

  main.php

  composer.json

现在在 composer.json 年,我宣布了这个 psr-4 自动加载:

 "autoload": {
    "psr-4": {
        "TemplateMethod\\": "src/"
    }
}

在抽象类 PrintInformation 中,我放了:

namespace TemplateMethod;

abstract class PrintInformation

并在 PrintXMLInfo 和 PrintListInfo 中扩展了它

namespace TemplateMethod;

use TemplateMethod\PrintInformation;

class PrintXMLInfo extends PrintInformation

在 PrintListInfo 中也是如此。

问题是“使用 TemplateMethod\PrintInformation”;

我在 PrintInformation 的同一命名空间中,但如果我写:

use PrintInformation;

我收到未找到类的错误:

PHP Fatal error:  Class 'PrintInformation' not found in /home/vagrant/shared/template_method/src/PrintXMLInfo.php on line 6

我无法理解我错的地方,如果父类和子类在同一个命名空间中,我不应该在没有使用命名空间前缀的情况下调用它们,对吧?

PHP 命名空间 自动加载

评论

1赞 Phil 7/6/2020
当类位于同一命名空间中时,不需要语句use
0赞 Salvio 7/6/2020
谢谢,我忘记了这个。
0赞 Salvio 7/6/2020
哦,如果我好了,它试图加载.../src/src/...当我使用时,是这样吗?
0赞 Phil 7/6/2020
我不确定你在那里问什么,但请记住,语句不使用相对路径use

答: 暂无答案