gpt4 book ai didi

php - 组织 Laravel 和自动加载子目录

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:59:18 26 4
gpt4 key购买 nike

我想以一种所有代码都在 src 目录下的方式构建我的 laravel 应用程序。我的项目结构如下所示。我如何在仍然可以调用 Route::get('accounting/item/{id}','AccountingItemController@getId')

的情况下执行此操作

我想避免将 src 下的每个模块添加到 ClassLoader。有没有办法告诉类加载器加载父目录src下的所有子目录?

app
app/src
app/src/accounting
app/src/accounting/controllers
app/src/accounting/models
app/src/accounting/repos
app/src/accounting/interfaces
app/src/job
app/src/job/controllers
app/src/job/models
app/src/job/repos
app/src/job/interfaces

最佳答案

是的,它叫做 PSR-0。

您应该为所有代码命名空间。通常,您会有一个供应商名称,您将使用顶级 namespace 。您的应用程序结构应如下所示。

app/src/Vendor/Accounting/Controllers
app/src/Vendor/Job/Controllers

然后您的 Controller 将相应地命名空间。

namespace Vendor\Accounting\Controllers;

以及在 route 使用它们时。

Route::get('accounting/item/{id}','Vendor\Accounting\Controllers\ItemController@getId');

最后,您可以在 composer.json 中向 Composer 注册您的命名空间。

"autoload": {
"psr-0": {
"Vendor": "app/src"
}
}

当然,如果您不想要顶级 Vendor 命名空间,您可以将其删除,但您需要将每个组件注册为 PSR-0。

"autoload": {
"psr-0": {
"Accounting": "app/src",
"Job": "app/src",
}
}

完成后,运行一次 composer dump-autoload,您应该能够添加新的 Controller 、模型、库等。只需确保目录结构与每个文件的命名空间一致。

关于php - 组织 Laravel 和自动加载子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17393853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com