【问题标题】:PSR-4 Namespace with Sub Directories带有子目录的 PSR-4 命名空间
【发布时间】:2023-04-02 11:12:01
【问题描述】:

我的 Laravel 应用程序和 PSR-4 自动加载有问题。我读到你可以在这样的命名空间中有多个“子目录”结构......

VendorName\ApplicationName\(SubDir)\ClassName

基本上我的用户存储库是这样的......

Acme\Repositories\EloquentUserRepoistory
Acme\Repositories\UserRepositoryInterface
Acme\Repositories\Repository
Acme\Repositories\RepositoryServiceProvider

所有名称空间为Acme\Repositories,但我想要这个目录结构...

Acme\Repositories\UserRepository\EloquentUserRepoistory
Acme\Repositories\UserRepository\UserRepositoryInterface
Acme\Repositories\Repository
Acme\Repositories\RepositoryServiceProvider

但是当我将用户存储库和接口移动到文件夹UserRepository 时,我找不到类?

我确定我只是在这里没有得到关于命名空间的一些真正简单的东西吗?

编辑

我想我要问的是如何拥有附加目录UserRepository 以将不同的存储库与 OrderRepositories 分开?

【问题讨论】:

    标签: laravel composer-php psr-4


    【解决方案1】:

    如果您将UserRepositoryInterface 移动到Acme\Repositories\UserRepository\UserRepositoryInterface.php 目录,则需要将UserRepositoryInterface 放入正确的命名空间中:

    <?php
    
    namespace Acme\Repositories\UserRepository;
    
    interface UserRepositoryInterface {
    
    }
    

    然后在其他要访问的文件中,您还需要使用这个新的命名空间而不是旧的命名空间

    【讨论】:

    • 好的,这就是我所做的...我在 Acme\Repositories\UserRepositories 创建了一个目录并将 UserRepositoryInterface 放在其中,我将文件中的命名空间更改为 Acme\Repositories\UserRepositories... 但是PHPStorm 抛出一个适合,说“未定义的常量 UserRepositories”... php 调试说“找不到接口 'Acme\Repositories\UserRepositoryInterface'”??
    • 当您将Acme\Repositories 移至Acme\Repositories\UserRepositories 并在您询问Acme\Repositories\UserRepository 的问题中时,为什么要使用它?不一样
    猜你喜欢
    • 2014-11-12
    • 2015-12-03
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 2021-10-13
    • 2023-03-25
    • 2015-12-01
    • 1970-01-01
    相关资源
    最近更新 更多