用 Composer构建自己的 PHP 框架之使用 ORM
回顾
经过前三篇文章 基础准备 、 构建路由 和 设计 mvc ,我们已经得到了一个结构比较完整的 mvc 架构的 php 微框架,但是距离一个真正能够上手使用的框架还差一样东西: 数据库封装 ,本篇就将讲述如何集成一个 orm composer 包 。
本篇是本系列最后一篇,接下来我可能会以 让我们开了又开的 composer 包 为系列标题分享一些体验和感悟,将主要发表在本站上。
正文
我们选择 laravel 的 illuminate/database 作为我们的 orm 包。我试用了几个著名的 orm,发现还是 laravel 的 eloquent 好用!让我们开心的 orm,开了又开! :-d
在本系列教程里,每一个 composer 包都要满足以下基本要求:
原生依赖 composer 进行管理
在好用的基础上尽量简单(比如我们那个超简单的路由包)
尽量新,用上 php 的新特性
说到 php 的新特性,有句题外话。 php5.3 引入了命名空间,这是规划在 php6 中的功能,所以 php5.3 在一定程度上其实就是 php6 ,php 的下一个版本是 php7 ,即将发布,主要贡献者是大名鼎鼎的 鸟哥 @laruence 。另外本台前方记者(就是我)刚刚从微博发来报道,鸟哥正在放大招,制造传说中 php7 on jit ,我大 php 的历史车轮是无法阻挡的哈哈哈!:-p
安装 illuminate/database
给 composer.json 增加一个 require 项:
"illuminate/database": "*"
运行 composer update ,等待安装完成。
使用 eloquent
修改 public/index.php 为:
<?php
use illuminate\database\capsule\manager as capsule;
// autoload 自动载入
require '../vendor/autoload.php';
// eloquent orm
$capsule = new capsule;
$capsule->addconnection(require '../config/database.php');
$capsule->booteloquent();
// 路由配置
require '../config/routes.php';
新增 config/database.php (注意替换数据库密码):
<?php
return [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'mffc',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => ''
];
修改 models/article.php :
<?php
/**
* article model
*/
class article extends illuminate\database\eloquent\model
{
public $timestamps = false;
}
controllers/homecontroller.php 无需改动。
刷新,页面依旧:
恭喜你!eloquent 使用成功!
eloquent 更多用法
eloquent 异常强大 ,可以说是 laravel 中 最特别 、 最有价值 的部分。
像 homecontroller 中调用的 article::first() ,之前用了十几行代码,现在什么都不用干,继承一个类就行了。
eloquent 更多用法参见:eloquent orm 中文文档
其他著名 orm
还有很多著名的 orm 和 datamapping(数据库迁移等) 包,参见: orm and datamapping
orm 能够大幅提高提高开发效率,eloquent 真乃神器也!
虽然 web 届各语言阵营都在不断推出新的所谓 快速开发框架 ,终归还是越来越像 rails 。eloquent 在表面上几乎是最像 rails 的 orm 的了,但是跟 rails 不能比啊,ruby 的超强面向对象特性可不是盖的。laravel 作者 taylor otwell 接受采访时曾表示,eloquent 是整个 laravel 中最难实现的部分。我在调试的时候也发现, mffc/vendor/illuminate/database/illuminate/database/eloquent/model.php 这个文件有 3000 多行......
目前建造一个丰满的可以上手使用的 php 框架的工作就算是基本完成了,接下来我会继续完善 mffc 框架,让她更加丰富、好用!
以后可能会有 模板引擎、表单验证、发送邮件、权限体系管理、异步队列、视频音频处理(乱入:-d) 等内容,敬请关注还未出世的 让我们开了又开的 composer 包 系列文章。
谢谢大家的阅读和陪伴!再见!
推荐阅读
-
用 Composer构建自己的 PHP 框架之构建路由
-
用 Composer构建自己的 PHP 框架之使用 ORM
-
用 Composer构建自己的 PHP 框架之基础准备
-
用 Composer构建自己的 PHP 框架之设计 MVC
-
用 Composer构建自己的 PHP 框架之构建路由_PHP
-
用 Composer构建自己的 PHP 框架之设计 MVC_PHP
-
用 Composer构建自己的 PHP 框架之基础准备_PHP
-
用 Composer构建自己的 PHP 框架之基础准备
-
用 Composer构建自己的 PHP 框架之基础准备
-
用 Composer构建自己的 PHP 框架之基础准备_PHP