【发布时间】:2018-02-11 07:18:07
【问题描述】:
我正在努力使自己符合 PSR-4 标准中命名空间的使用。目前我不完全确定我使用它是否正确,所以我请一些聪明的男人/女孩在这里帮助我,如果不是:-)!
- third_party
-- Webservices\
-- Webservice.php
--- Requests\
--- Login.php
--- Responses\
--- Login.php
我正在使用以下命名空间(Composer):
"Webservices\\": "third_party/Webservices"
例如一个请求命名空间:
namespace Webservices\Requests\Login;
对于响应命名空间:
namespace Webservices\Responses\Login;
对于位于Webservices 文件夹中的 Webservice.php 文件,我使用的是命名空间:
namespace Webservices\Webservice;
我不完全确定我是否正确使用了最后一个,但我想不出任何其他方法让它正常工作。
如有任何帮助,或者如果它是正确的,那也太棒了! :-)
【问题讨论】:
-
您的命名空间根是
Webservices,这是您在 composer.json 中定义的。namespace Webservices\Webservice;是错误的。Webservices\Webservice是Webserviceclass 的完全限定名称 -
因此,如果我想使用命名空间
namespace Webservices\Webservice;,我得到正确的tis,我需要将composer更改为"Webservices\\": "third_party"。但是话又说回来,我不认为命名空间根是正确的,或者是这样吗?因为它不仅适用于 Webservices,该文件夹中还有更多第三方应用程序,还是我需要在 composer 文件中定义它们? -
只是不要使用
Webservices\Webservice作为命名空间。如果你这样做了,你最终会得到一个名为Webservices\Webservice\Webservice::class的类,这在我看来有点荒谬。其他命名空间也是如此。命名空间是文件夹结构,类名是文件名 -
所以在
Webservice.php中没有定义任何命名空间?我理解正确吗:')? 编辑你在说我们class Webservices\Webservice { }? -
最简单的方法就是尝试一下,看看是否有任何自动加载错误
标签: php namespaces psr-4