博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用 Composer 一步一步构建自己的 PHP 框架(四)——使用 ORM
阅读量:7030 次
发布时间:2019-06-28

本文共 1927 字,大约阅读时间需要 6 分钟。

hot3.png

本教程示例代码见 

回顾

经过前三篇文章 基础准备 、 构建路由 和 设计 MVC ,我们已经得到了一个结构比较完整的 MVC 架构的 PHP 微框架,但是距离一个真正能够上手使用的框架还差一样东西: 数据库封装 ,本篇就将讲述如何集成一个 ORM Composer 包 。

本篇是本系列最后一篇,接下来我可能会以 让我们开了又开的 Composer 包 为系列标题分享一些体验和感悟,将主要发表在本站上。

正文

我们选择 Laravel 的  作为我们的 ORM 包。我试用了几个著名的 ORM,发现还是 Laravel 的 Eloquent 好用!让我们开心的 ORM,开了又开! :-D

在本系列教程里,每一个 Composer 包都要满足以下基本要求:

  1. 原生依赖 Composer 进行管理
  2. 在好用的基础上尽量简单(比如我们那个超简单的路由包)
  3. 尽量新,用上 PHP 的新特性

 

说到 PHP 的新特性,有句题外话。 PHP5.3 引入了命名空间,这是规划在 PHP6 中的功能,所以 PHP5.3 在一定程度上其实就是 PHP6 ,PHP 的下一个版本是 PHP7 ,即将发布,主要贡献者是大名鼎鼎的 鸟哥 。另外本台前方记者(就是我)刚刚从微博发来报道,鸟哥正在放大招,制造传说中 PHP7 on JIT ,我大 PHP 的历史车轮是无法阻挡的哈哈哈!:-P

安装 illuminate/database

给 composer.json 增加一个 require 项:

"illuminate/database": "*"

运行 composer update ,等待安装完成。

使用 Eloquent

修改 public/index.php 为:

addConnection(require '../config/database.php');$capsule->bootEloquent();// 路由配置require '../config/routes.php';

 

新增 config/database.php (注意替换数据库密码):

'mysql', 'host' => 'localhost', 'database' => 'mffc', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', 'collation' => 'utf8_general_ci', 'prefix' => '' ];

   

修改 models/Article.php :

   

controllers/HomeController.php 无需改动。

刷新,页面依旧:

Image

恭喜你!Eloquent 使用成功!

Eloquent 更多用法

Eloquent 异常强大 ,可以说是 Laravel 中 最特别 、 最有价值 的部分。

像 HomeController 中调用的 Article::first() ,之前用了十几行代码,现在什么都不用干,继承一个类就行了。

Eloquent 更多用法参见:

其他著名 ORM

还有很多著名的 ORM 和 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 框架的工作就算是基本完成了,接下来我会继续完善 ,让她更加丰富、好用!

以后可能会有 模板引擎、表单验证、发送邮件、权限体系管理、异步队列、视频音频处理(乱入:-D) 等内容,敬请关注还未出世的 让我们开了又开的 Composer 包 系列文章。

谢谢大家的阅读和陪伴!再见! 

该项目已经演化成为一个成熟的轻量级 PHP 框架 TinyLara。

转载于:https://my.oschina.net/yonghan/blog/758907

你可能感兴趣的文章
[转]Porting to Oracle with Entity Framework NLog
查看>>
chmod更改文件的权限
查看>>
oracle 10g/11g RAC 启停归档模式
查看>>
poj3461 Oulipo
查看>>
OAuth2.0学习(1-12)开源的OAuth2.0项目和比较
查看>>
Gitlab,这也就O了???
查看>>
2014 百度之星 1003 题解 Xor Sum
查看>>
Linux中在主机上实现对备机上文件夹及文件的操作的C代码实现
查看>>
iOS 块的简单理解
查看>>
idea中如何配置git以及在idea中初始化git
查看>>
关于JQuery Class选择器的一点
查看>>
POJ3264 Balanced Lineup
查看>>
redis-cli 连接远程服务器
查看>>
emlog通过pjax实现无刷新加载网页--完美解决cnzz统计和javascript失效问题
查看>>
sublime 之 vitage/emmet
查看>>
代码管理(四)SVN和Git对比
查看>>
python - hadoop,mapreduce demo
查看>>
mongodb常见管理命令
查看>>
1.7 以函数对象取代函数
查看>>
Vue过渡效果之JS过渡
查看>>