好的,我们来梳理一下 Laravel 4.x 版本的主要特性:
-
引入 Composer 依赖管理: 这是 Laravel 4 最重大的变革。它摒弃了之前的捆绑式框架模式,将核心框架组件拆分成独立的包(Packages),通过 Composer 进行依赖管理和自动加载。这使得框架更加模块化,方便升级和扩展。
illuminate/*系列包(如illuminate/routing,illuminate/database等)构成了框架的核心。
-
目录结构重构:
- 核心框架代码不再存放在
app目录下,而是作为 Composer 依赖安装在vendor目录中。 app目录专注于存放应用程序自身的代码(控制器、模型、视图等)。- 引入了
bootstrap目录存放框架启动文件(如autoload.php,start.php)。 - 引入了
public目录作为 Web 根目录,存放index.php入口文件和静态资源。
- 核心框架代码不再存放在
-
路由增强:
- 保持了简洁强大的路由定义语法。
- 增加了资源路由(Resource Controllers),可以通过一行代码定义标准的 RESTful 路由。
- 引入了路由过滤器(Route Filters),可以在路由执行前或执行后应用逻辑(如身份验证、日志记录),分为"之前"和"之后"过滤器。这是中间件概念的前身。
-
Eloquent ORM 改进:
- 继续作为核心 ORM。
- 增强了关系管理 ,特别是对多对多关系 (Many-to-Many)的支持更加完善,使用
belongsToMany方法。 - 查询作用域(Query Scopes)允许定义可复用的查询约束。
- 访问器和修改器(Accessors & Mutators)提供了在获取或设置模型属性时进行处理的便捷方式。
- 模型事件(Model Events)允许在模型生命周期的关键时刻(如创建、更新、删除)触发逻辑。
-
查询构建器增强:
- 功能更加强大,支持更复杂的查询构造。
- 引入了
join,leftJoin,whereIn,whereNotIn,whereNull,whereNotNull等更多方法。 - 更好的聚合函数支持(
count,max,min,avg,sum)。
-
视图与 Blade 模板引擎:
- Blade 模板引擎继续发展。
- 增强了布局继承功能,使模板结构更清晰。
- 引入了
@include指令,便于包含子视图。 - 提供了
@section和@yield的更灵活使用。
-
表单与 HTML 辅助:
- 内置了强大的表单构建器,用于生成表单元素和处理 CSRF 保护。
- 提供了 HTML 辅助函数 (如
Form::open(),Form::text(),Html::link()等),简化 HTML 生成(这些在 Laravel 5 后逐渐被弃用,转向更纯粹的 Blade 标签)。
-
安全增强:
- CSRF 保护 成为内置且默认启用的功能,通过表单辅助函数或手动添加
_token字段实现。 - 表单验证功能更加强大和灵活,支持复杂的验证规则和自定义消息。
- CSRF 保护 成为内置且默认启用的功能,通过表单辅助函数或手动添加
-
队列服务(Queues): 在 Laravel 4.1 中引入。提供了统一的 API 来处理后台任务,支持多种队列驱动(如 Beanstalkd, Amazon SQS, Redis,以及同步或数据库驱动)。
-
命令行工具 Artisan:
- 功能扩展,支持更多的生成命令(如控制器、模型、迁移等)。
- 引入了 Artisan 生成器(Generators),可以快速搭建代码骨架。
- 支持开发者创建自定义 Artisan 命令。
-
数据库迁移(Migrations)增强:
- 迁移系统更加成熟,是管理数据库结构变更的核心工具。
- 提供了更多操作数据表结构的方法(如创建索引、外键等)。
-
包开发支持: 由于 Composer 的引入,Laravel 4 极大地简化了包的创建、分发和集成流程。Artisan 提供了创建包骨架的命令。
-
性能优化:
- 引入了路由缓存 (Route Caching)。通过 Artisan 命令
php artisan route:cache将路由文件编译成单个文件,大幅提升路由注册速度(尤其是在生产环境有大量路由时)。 - 引入了配置缓存 (Config Caching)。通过
php artisan config:cache将配置文件合并缓存,减少加载时的文件读取开销。
- 引入了路由缓存 (Route Caching)。通过 Artisan 命令
-
事件系统(Events): 提供了一个简单的观察者模式实现,允许在应用中触发和监听事件,实现解耦。
-
单元测试集成: 继续内置对 PHPUnit 的支持,方便进行单元测试和功能测试。
总结来说,Laravel 4.x 是框架现代化和模块化的关键版本。 它通过拥抱 Composer 彻底改变了 PHP 框架的依赖管理方式,重构了目录结构,并引入了众多提升开发效率和应用程序健壮性的特性(如资源路由、队列、路由/配置缓存、Eloquent 关系改进等),为后续 Laravel 5 的繁荣奠定了基础。