据我了解,名称空间声明如下:vendor\module\classname
。
目录结构将是:
/Acme
/Module1
/src
/Module1
/Class.php
实例化该类的有效方法是:new Acme\Module1\Class();
我的假设是否正确?如果是这样,使用src
文件夹有什么好处?
答案 0 :(得分:9)
惯例。
如果你正在使用作曲家,并且想要自动加载你的课程,看起来你正在尝试进行PSR-0自动加载。
所以如果你有"Acme": "src/"
然后在与composer.json文件相同的目录中将是一个src文件夹,并且在src文件夹中将是一个Acme文件夹。该文件夹中的所有文件都是名称空间Acme;并且该文件夹的子目录中的所有文件都是namespace Acme\Subdirectory;
。
在控制台中,每次更改composer.json文件的自动加载部分时,都需要键入composer dump-autoload
。 (或者每次将新文件添加到自动加载的目录时,对于类映射自动加载。)这会导致更新composer生成的文件。 (您可以在vendor / composer目录中找到这些文件。)
因此,如果有一个src / Acme / Subdirectory / ClassName.php,其中一个类名为ClassName,那么要实例化该类,您可以键入new \Acme\Subdirectory\ClassName();
编辑:所以如果这是你的composer.json文件
{
"autoload": {
"psr-0": {
"Acme": "src/"
}
}
}
然后您的目录结构将是这样的
/ProjectRoot
composer.json
/src
/Acme
/Module1
Class.php
您可以通过输入
来创建课程的新实例new \Acme\Module1\Class();