构建自个儿的PHP框架-定义ORM的接口
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了构建自个儿的PHP框架-定义ORM的接口,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2824字,纯文字阅读大概需要5分钟。
内容图文
![构建自个儿的PHP框架-定义ORM的接口](/upload/InfoBanner/zyjiaocheng/225/b201581f4e1c4e19a6dcaf9dd7903c30.jpg)
在上一篇博客中,我们抽象出了Controller的基类,实现了页面的渲染和返回JSON字符串的功能。
那作为一个框架,我们现在还缺少什么?是的,大家应该已经注意到了,我们在这之前从来没有连接过数据库,我们缺少一个ORM(Object Relational Mapping)。
在php中连接mysql有三种方式,分别是使用原生函数、mysqli扩展和PDO扩展,详细内容可以查看我之前的博客《PHP的学习--连接MySQL的三种方式》。
我们要选择哪一种呢?考虑到作为一个框架不能仅支持一种数据库,我们就选择使用PDO。当然如果你确定你的框架只需要连接mysql数据库,也可以考虑使用mysqli。
PDO支持如下的数据库:
- CUBRID (PDO)
- MS SQL Server (PDO)
- Firebird (PDO)
- IBM (PDO)
- Informix (PDO)
- MySQL (PDO)
- MS SQL Server (PDO)
- Oracle (PDO)
- ODBC and DB2 (PDO)
- PostgreSQL (PDO)
- SQLite (PDO)
- 4D (PDO)
当然,这些数据库即使都可以使用PDO去连接使用,但在某些具体的情况下,还是有些许不同的,详情可参考PDO文档
鉴于我电脑现在只安装了mysql,之后的code,只会测试mysql数据库,不会测试其他数据库。
首先我们会将这些内容放在src/db文件夹中,我们需要定义一下接口,这里我们会先安最简单的来。
我们需要实现什么?最简单的就是数据的增删改查。
假设我们现在有一张article表,一个与之对应的Model Article,我们希望怎么用它呢?
// 选出id为1的一篇文章$article = Article::findOne(['id' => 1]);// 选出status是unpublished的所有文章$articles = Article::findAll(['status' => 'unpublished']);// 将id为1的所有文章的status更新为publishedArticle::updateAll(['id' => 2], ['status' => 'published']);// 删除所有id为1的文章Article::deleteAll(['id' => 2]);// $article是之前选出的id为1的文章// 更新它的属性status为unpublished$article->status = 'unpublished';// 保存更新到数据库$article->update();// 删除该文章$article->delete();// 创建一个新文章$article = new Article();$article->name = 'My first article';$article->status = 'published';// 将该文章保存到数据库中$article->insert();
大概在上面列了一下,我们简单的ORM实现之后的使用,据此我们可以定义出如下接口:
<?phpnamespace sf\db;interface ModelInterface{ public static function tableName(); public static function primaryKey(); public static function findOne($condition); public static function findAll($condition); public static function updateAll($condition, $attributes); public static function deleteAll($condition); public function insert(); public function update(); public function delete();}
该文件放在src/db文件夹下,这是我目前想到的最简单的接口,可能会有所遗漏,我们会在开发的时候不断完善。暂时我们会先按照这个实现。
这是一个接口,之后我们会有一个BaseModel类实现这个接口,然后所有的Model都继承BaseModel去实现。
好了,今天就先到这里。项目内容和博客内容也都会放到Github上,欢迎大家提建议。
code:https://github.com/CraryPrimitiveMan/simple-framework/tree/0.4
blog project:https://github.com/CraryPrimitiveMan/create-your-own-php-framework
- 1楼躲猫猫66
- 写得很赞哦!博主,我们做了一个帮助博主推广博客的app叫同行说,只需复制文章链接即可发布给更多程序员们看到哦,欢迎体验哈,一起发扬分享精神~
内容总结
以上是互联网集市为您收集整理的构建自个儿的PHP框架-定义ORM的接口全部内容,希望文章能够帮你解决构建自个儿的PHP框架-定义ORM的接口所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。