深入了解Laravel 11中的精简目录结构
Laravel  /  管理员 发布于 8个月前   344
我们认为你会喜欢下周即将发布的 Laravel 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 应用程序的新变化做好准备。
应用程序目录
Laravel 11 的应用程序目录已经大大缩减,将 Laravel 附带的九个中间件移到了框架中,
并从项目中移出。
通常情况下,这些中间件不会被大量定制,
Laravel 11 将提供其他方法来定制内置中间件和添加自己的中间件。
全新 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);
Laravel 项目中不再有 Kernel.php 文件,这些文件通过框架 bootstrap/app.php 文件处理。
你可能也注意到了 Controllers 目录中只有一个 Controller 类,没有任何扩展。
你可以自行决定如何扩展控制器(或不扩展),但它提供了一个默认的抽象控制器类。
配置目录
最让你震惊的可能是更新后的 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命令,发布配置,
或者在Laravel vendor文件夹下的config/logging.php文件中查找:
php artisan config:show logging
cat vendor/laravel/framework/config/logging.php
数据库目录
数据库目录大致相同。
不过,你会发现迁移文件名的前缀并不代表指定日期,而是根据需要保持顺序。
项目中不再有 create_personal_access_tokens.php 迁移文件。
只有在创建 API 时才需要个人访问令牌,我们将在路由目录变更中介绍这一点。
此外,除非在创建新 Laravel 项目时选择不同的数据库选项,否则数据库.sqlite 文件将默认安装。
路由目录
路由目录也精简到只包含 web.php 和 console.php 路由文件。
如果你想创建 API 或使用广播功能,可以通过 artisan 安装它们:
php artisan install:api
php artisan install:broadcasting
这些命令将引入所需的迁移、JavaScript 和配置文件。
这样做的好处是,不需要广播或 API 路由的应用程序不必担心项目中存在这些不必要的文件。
Laravel 11 路由目录
测试目录
在 Laravel 11 项目中,test/ 目录不再包含 CreatesApplication 特性。
如果你升级了 Laravel 10 项目,可以移除这个特性,因为它现在已经作为框架的基础 TestCase 的一部分提供了。
在 Laravel 10 项目中,Laravel 10 的 TestCase 基类中唯一包含的是 CreatesApplication 特性,
它在每次测试前创建一个新应用程序时引导应用程序,作为设置的一部分。
将现有应用程序升级到 Laravel 11 后,就可以安全地移除这个特质(及其用法)了。
了解更多
如果你想了解更多关于 Laravel 11 的信息,
请查看我们的 Laravel 11 帖子,了解这个令人兴奋的新版本的所有细节。
https://laravel-news.com/laravel-11
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号