侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

深入了解Laravel 11中的精简目录结构

Laravel  /  管理员 发布于 1年前   425

我们认为你会喜欢下周即将发布的 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

从表面上看,项目目录结构完全相同:

1.png

不过,如果你开始深入子目录,文件数量会比刚安装 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 将提供其他方法来定制内置中间件和添加自己的中间件。

2.png


全新 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 文件中增加了许多配置选项。

3.png


如果想从框架中发布任何给定的配置文件来进行自定义,可以通过 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 时才需要个人访问令牌,我们将在路由目录变更中介绍这一点。

4.png

此外,除非在创建新 Laravel 项目时选择不同的数据库选项,否则数据库.sqlite 文件将默认安装。


路由目录

路由目录也精简到只包含 web.php 和 console.php 路由文件。

如果你想创建 API 或使用广播功能,可以通过 artisan 安装它们:

php artisan install:api
php artisan install:broadcasting

这些命令将引入所需的迁移、JavaScript 和配置文件。

这样做的好处是,不需要广播或 API 路由的应用程序不必担心项目中存在这些不必要的文件。

5.png


Laravel 11 路由目录

测试目录

在 Laravel 11 项目中,test/ 目录不再包含 CreatesApplication 特性。

如果你升级了 Laravel 10 项目,可以移除这个特性,因为它现在已经作为框架的基础 TestCase 的一部分提供了。

6.png


在 Laravel 10 项目中,Laravel 10 的 TestCase 基类中唯一包含的是 CreatesApplication 特性,

它在每次测试前创建一个新应用程序时引导应用程序,作为设置的一部分。

将现有应用程序升级到 Laravel 11 后,就可以安全地移除这个特质(及其用法)了。


了解更多

如果你想了解更多关于 Laravel 11 的信息,

请查看我们的 Laravel 11 帖子,了解这个令人兴奋的新版本的所有细节。

https://laravel-news.com/laravel-11


  • 上一条:
    Laravel 11将加入 "急迫负载限制 "功能
    下一条:
    vue项目打包程序实现把项目打包成一个exe可执行程序
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • Laravel 11.14版本发布 - 新的字符串助手和ServeCommand改进(0个评论)
    • Laravel 11.12版本发布 - Artisan的`make`命令自动剪切`.php `扩展(0个评论)
    • Laravel的轻量型购物车扩展包:binafy/laravel-cart(0个评论)
    • Laravel 11.11版本发布 - 查看模型中的第三方关系:show(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-01
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客