深入探讨 Laravel 11 中简化的目录结构
2024 年 1 月 30 日
我们认为您会喜欢在开始时使用的新鲜骨架 拉拉维尔 11 应用程序将于下周发布!新手会欣赏这种极简主义,而经验丰富的开发人员在升级时不会遇到典型 Laravel 应用程序结构的重大变化。
如果您想继续进行实验,可以同时创建 Laravel 10 和 Laravel 11 项目。我们使用以下命令来执行此操作:
# Update the installer
composer global update laravel/installer -W
cd path/to/projects
# Create a Laravel 10 app
laravel new laravel-10-app -n --git --pest
# Crate a Laravel 11 app
laravel new laravel-11-app --dev -n --git --pest
从表面上看,项目目录结构看起来相同:
但是,如果您开始深入子目录,文件数量会从全新的 Laravel 11 安装中减少约 69 个文件:
# Fresh Laravel v10 app
$ find . -type f -not -path "./vendor/*" | wc -l
=> 217
# Fresh Laravel v11 app (as of 01/29/2024)
$ find . -type f -not -path "./vendor/*" | wc -l
=> 148
让我们回顾一下最重要的更新,看看它们与 Laravel 10 应用程序相比如何,以便您为新的 Laravel 11 应用程序的变化做好准备。
这
app
目录
这
app
目录已被极大地精简,将 Laravel 附带的九个中间件移入框架并移出项目。通常,这些中间件不会进行大量定制,Laravel 11 将提供其他方法来定制内置中间件并添加您自己的中间件。
这
app
新 Laravel 11 应用程序中的目录
中间件更改是通过
bootstrap/app.php
根据 Taylor Otwell 的说法,这是一个“用于配置 Laravel 的精益路由风格的文件”,如下所示:
return Application::configure(basePath: dirname(__DIR__))
->withProviders()
->withRouting(
web: __DIR__.'/../routes/web.php',
// api: __DIR__.'/../routes/api.php',
commands: __DIR__.'/../routes/console.php',
// channels: __DIR__.'/../routes/channels.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
//
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();
您可以通过在以下内容中添加类似以下内容来添加应用程序中间件
withMiddeware()
关闭:
$middleware->web(append: \App\Http\Middleware\ExampleMiddleware::class);
这
Kernel.php
文件不再位于 Laravel 项目中,这些文件是通过框架处理的
bootstrap/app.php
文件。
您可能还注意到
Controllers
目录只包含一个
Controller
不从任何东西扩展的类。这取决于您想要如何扩展控制器(或不扩展),但它提供了默认值
abstract Controller
班级。
这
config
目录
对你来说最大的震撼可能就是更新了
config
目录,里面什么都没有(除了
.gitkeep
文件)。但是,您会注意到,存在更多配置选项
.env.example
文件。
如果您想从框架发布任何给定的配置文件来自定义它,您可以通过
config:publish
命令:
# config/database.php
php artisan config:publish database
# config/logging.php
php artisan config:publish logging
# Or publish all of them
php artisan config:publish
您可以自由地仅扩展您关心的配置值,它们将与框架的默认值合并,因此您不必将所有已发布的配置选项保留在给定文件中。
假设您想要在框架附带的配置中查找配置值。在这种情况下,您可以使用 Artisan
config:show
命令,发布配置,或在
config/logging.php
Laravel供应商文件夹中的文件:
php artisan config:show logging
cat vendor/laravel/framework/config/logging.php
这
database
目录
这
database
目录大致相同。但是,您会注意到迁移文件名的前缀并不代表给定日期,而是根据需要保持顺序。这
create_personal_access_tokens.php
迁移文件不再位于项目中。仅当您构建 API 时才需要个人访问令牌,我们将在
routes
目录更改。
另外,
database.sqlite
文件将默认安装,除非您在创建新的 Laravel 项目时选择不同的数据库选项。
这
routes
目录
路线目录也被精简为仅包含
web.php
和
console.php
路线文件。如果您想创建 API 或使用广播功能,可以通过以下方式安装它们
artisan
:
php artisan install:api
php artisan install:broadcasting
这些命令将引入所需的迁移、JavaScript 和配置文件。这样做的好处是,不需要广播或 API 路由的应用程序不必担心项目中存在这些不必要的文件。
拉拉维尔 11
routes
目录
这
test
目录
这
test/
目录不再包含
CreatesApplication
Laravel 11 项目中的特质。如果您升级 Laravel 10 项目,则可以删除此特征,因为它现在作为基础的一部分提供
TestCase
从框架来看。
在 Laravel 10 项目中,基础中唯一包含的内容
TestCase
Laravel 10 中的类是
CreatesApplication
特征,它在每次测试之前创建新应用程序作为设置的一部分时引导应用程序。将现有应用程序升级到 Laravel 11 后,您可以安全地删除此特征(及其使用)。
了解更多
如果您想了解有关 Laravel 11 的更多信息,请查看我们的 拉拉维尔 11 发布有关这个令人兴奋的新版本的所有详细信息。
帖子 深入探讨 Laravel 11 中简化的目录结构 首先出现在 Laravel 新闻 。
加入 Laravel 时事通讯 直接在您的收件箱中获取所有此类最新的 Laravel 文章。