Php 子文件夹和composer中的Laravel模块
我正在使用,我想在子文件夹中创建模块。因此,这是不可能的,但可以在Php 子文件夹和composer中的Laravel模块,php,laravel,module,composer-php,Php,Laravel,Module,Composer Php,我正在使用,我想在子文件夹中创建模块。因此,这是不可能的,但可以在composer.json中更改路径。因此,我创建了新模块Role2,并将其移动到子文件夹Administration。然后我更改了模块的composer.json: { "name": "nwidart/role2", "description": "", "authors": [ { "name": "Nicolas Widart", "e
composer.json
中更改路径。因此,我创建了新模块Role2
,并将其移动到子文件夹Administration
。然后我更改了模块的composer.json
:
{
"name": "nwidart/role2",
"description": "",
"authors": [
{
"name": "Nicolas Widart",
"email": "n.widart@gmail.com"
}
],
"extra": {
"laravel": {
"providers": [
"Modules\\Administration\\Role2\\Providers\\Role2ServiceProvider"
],
"aliases": {
}
}
},
"autoload": {
"psr-4": {
"Modules\\Administration\\Role2\\": ""
}
}
}
...
"autoload": {
"classmap": [
"database",
"vendor",
"app/Easyk"
],
"exclude-from-classmap": [
"vendor/swiftmailer"
],
"psr-4": {
"App\\": "app",
"Modules\\": "Modules",
"Easyk\\": "app/Easyk",
"Asipem\\OAuth2ClientManagement\\": "packages/asipem/oauth2-client-management/src",
"Asipem\\CAPRequestDispatcher\\": "packages/asipem/cap-request-dispatcher/src"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
],
"psr-4": {
"Tests\\Unit\\": "tests/unit"
}
},
...
但是在commandcomposer dumpautoload
之后,我在commandphp artisan模块:list
中看不到任何内容,在vendor/composer/autoload_psr4.php
中也看不到该模块的路径。生成多个composer(一个在根目录中,一个在模块中)时,我做错了什么或缺少了什么?或者在子文件夹中有一些简单的模块选项
我在rootcomposer.json中有以下内容:
{
"name": "nwidart/role2",
"description": "",
"authors": [
{
"name": "Nicolas Widart",
"email": "n.widart@gmail.com"
}
],
"extra": {
"laravel": {
"providers": [
"Modules\\Administration\\Role2\\Providers\\Role2ServiceProvider"
],
"aliases": {
}
}
},
"autoload": {
"psr-4": {
"Modules\\Administration\\Role2\\": ""
}
}
}
...
"autoload": {
"classmap": [
"database",
"vendor",
"app/Easyk"
],
"exclude-from-classmap": [
"vendor/swiftmailer"
],
"psr-4": {
"App\\": "app",
"Modules\\": "Modules",
"Easyk\\": "app/Easyk",
"Asipem\\OAuth2ClientManagement\\": "packages/asipem/oauth2-client-management/src",
"Asipem\\CAPRequestDispatcher\\": "packages/asipem/cap-request-dispatcher/src"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
],
"psr-4": {
"Tests\\Unit\\": "tests/unit"
}
},
...
composer.json中的autoload
->psr-4
键用于定义应用程序的psr-4根命名空间
所做的是定义一个名称空间和目录位置,以便Autoloader查找该名称空间下的文件
与您的rootcomposer.json一样
"psr-4": {
"App\\": "app",
"Modules\\": "Modules",
"Easyk\\": "app/Easyk",
"Asipem\\OAuth2ClientManagement\\": "packages/asipem/oauth2-client-management/src",
"Asipem\\CAPRequestDispatcher\\": "packages/asipem/cap-request-dispatcher/src"
}
App
是基本名称空间,App
是其基本目录。通过定义它,您可以告诉autoloader名称空间为App
的所有文件都将驻留在目录“App”中。之后,Autoloader将在PSR-4
路径中的app
目录中遍历基本名称空间app
之后的名称空间路径
例如:ControllerApp\Controller\ExampleController
将告诉Autoloader类定义将在App/Controller/ExampleController
中找到
因此,您需要根据命名空间Modules\\Administration\\Role2\\
指定模块的基本目录位置,该命名空间是模块文件夹的基本源目录
希望有帮助