我是新手laravel开发人员,我想了解名称间距如何在这里工作。所以我正在学习Repository模式,并决定继续在我的项目中实施它。在laravel 5中名称间距如何使用PSR4工作?
因此,我创建了一个名为archive
目录,然后将其用在PSR4我composer.json文件像这样装:
"Archive\\": "archive/"
现在我在archive
文件夹中创建一个文件夹Repositories
,我将创建所有库。而我在其中的命名空间文件就像这样:
namespace Archive\Repositories;
这似乎工作正常。然后,我在Repositories
文件夹内创建了一个Contracts
文件夹,该文件夹将包含我将要使用的实现的所有接口,例如UserRepositoryInterface
。我在Contracts文件夹中的命名空间文件是这样的:
namespace Archive\Repositories\Contracts;
哪个工作正常。
现在我的疑问在于我试图在Repositories
文件夹中做出的具体实现。例如,有一个DbUserRepository
在合同文件夹中实现UserRepositoryInterface
。
现在,因为我是新来这个我试过:
class DbUserRepository implements Contacts\UserRepositoryInterface
,它工作得很好,但后来我想,我应该use
它放在文件的顶部,像这样:
use Contacts\UserRepositoryInterface;
而且我可能只是这样做:
class DbUserRepository implements UserRepositoryInterface
它应该根据我的工作不错,但它给了我一个不类FO但是当我做这样的事情时:
use Archive\Repositories\Contacts\UserRepositoryInterface;
它现在工作正常。但这是我模糊的地方。在DbUserRepository
里面,我已经在Archive\Repositories
的nampspace里了,为什么不直接从那里查看合同文件夹呢?为什么我需要指定完整以此为use Archive\Repositories\Contacts\UserRepositoryInterface;
为什么我不能只是说:
use Contacts\UserRepositoryInterface;
我希望我的问题是不是太混乱。虽然我的代码现在正在工作,但我很模糊命名空间如何工作。