我的命名空间回退和在 Composer 中使用 PSR-4 加载程序时遇到问题。
我想做的是:
- 有一个可以覆盖/扩展的核心。
- 核心基于接口。
目录结构是这样的:
site/app/View/Example.php
site/src/ACME/app/View/Example.php
site/src/ACME/app/Interface/View.php
我没有设置这个配置,所以如果你有更好的建议,那就去吧。
我的作曲家 json 对于 psr-4 是这样的:
"autoload": {
"psr-4": {
"ACME\\App\\Site\\" : "app/",
"ACME\\App\\" : "src/AMCE/app/"
}
}
我认为如果找不到站点,这将使 ACME\App\Site\View 回退到 ACME\App\View (注意我还没有完成界面部分......)。
我的 site/app/View/Example.php 代码如下:
namespace ACME\App\Site\View;
class ViewExample extends View {
当我也有 site/app/View/View.php 时,哪个有效。看起来像:
namespace ACME\App\Site\View;
class View extends \ACME\App\View\View {
site/src/app/View/View.php 如下所示:
namespace ACME\APP\View;
class View {
这个应该使用接口(我还没试过)。
所以我真正想做的就是做到这一点,这样我就不必拥有site/app/View/View.php,也不必拥有site/app/View/Example.php——它可以使用网站/src/ACME/app/View/Example.php。
对不起,我是命名空间的新手,所以我可能不会很好地表达它。
我得到的是我认为 ACME\App\Site 会回退到 ACME\App - 它没有?还是我做错了?目前它需要所有文件到位。