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