构建自己的PHP框架--定义ORM的接口,构建php框架orm
构建自己的PHP框架--定义ORM的接口,构建php框架orm
在上一篇博客中,我们抽象出了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,我们希望怎么用它呢?
<span>//</span><span> 选出id为1的一篇文章</span> <span>$article</span> = Article::findOne(['id' => 1<span>]); </span><span>//</span><span> 选出status是unpublished的所有文章</span> <span>$articles</span> = Article::findAll(['status' => 'unpublished'<span>]); </span><span>//</span><span> 将id为1的所有文章的status更新为published</span> Article::updateAll(['id' => 2], ['status' => 'published'<span>]); </span><span>//</span><span> 删除所有id为1的文章</span> Article::deleteAll(['id' => 2<span>]); </span><span>//</span><span> $article是之前选出的id为1的文章 // 更新它的属性status为unpublished</span> <span>$article</span>->status = 'unpublished'<span>; </span><span>//</span><span> 保存更新到数据库</span> <span>$article</span>-><span>update(); </span><span>//</span><span> 删除该文章</span> <span>$article</span>-><span>delete(); </span><span>//</span><span> 创建一个新文章</span> <span>$article</span> = <span>new</span><span> Article(); </span><span>$article</span>->name = 'My first article'<span>; </span><span>$article</span>->status = 'published'<span>; </span><span>//</span><span> 将该文章保存到数据库中</span> <span>$article</span>->insert();
大概在上面列了一下,我们简单的ORM实现之后的使用,据此我们可以定义出如下接口:
<?<span>php namespace sf\db; </span><span>interface</span><span> ModelInterface { </span><span>public</span> <span>static</span> <span>function</span><span> tableName(); </span><span>public</span> <span>static</span> <span>function</span><span> primaryKey(); </span><span>public</span> <span>static</span> <span>function</span> findOne(<span>$condition</span><span>); </span><span>public</span> <span>static</span> <span>function</span> findAll(<span>$condition</span><span>); </span><span>public</span> <span>static</span> <span>function</span> updateAll(<span>$condition</span>, <span>$attributes</span><span>); </span><span>public</span> <span>static</span> <span>function</span> deleteAll(<span>$condition</span><span>); </span><span>public</span> <span>function</span><span> insert(); </span><span>public</span> <span>function</span><span> update(); </span><span>public</span> <span>function</span><span> delete(); }</span>
该文件放在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

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

php开源mvc框架有Laravel、Symfony、CodeIgniter、Yii和Phalcon等。详细介绍:1、Laravel是一个流行的PHP框架,它提供了简洁优雅的语法和丰富的功能,它具有强大的路由系统、数据库抽象层、队列处理、缓存管理和认证功能等,Laravel还提供了一个活跃的社区和广泛的文档资源,使得学习和使用变得更加容易;2、Symfony等等。

php的mvc框架有:1、Laravel,具有简单、优雅和可扩展的语法,提供了丰富的功能和强大的开发工具;2、Symfony,以灵活性和可扩展性而闻名,提供了许多组件和工具;3、CodeIgniter,简单而快速的MVC框架,拥有清晰简洁的代码和轻量级的体量,适用于快速开发小型和中型的Web应用程序;4、Yii,高性能的MVC框架,注重安全性和可扩展性等等。

随着互联网技术的发展和全球化的趋势,越来越多的开发者选择使用Go语言进行开发,而MVC框架是一种被广泛应用的Web框架。本文将详细介绍Go语言中MVC框架的开发,旨在帮助开发者更好地理解和运用MVC框架。一、MVC框架简介MVC(Model-View-Controller)是一种软件开发中的架构模式,它将一个应用程序分为三个核心部分:模型(Model)、视图

随着互联网技术的发展,MVC框架成为了Web开发中最受欢迎的一种思想和模式。其中,PHP语言作为一种Web开发语言,也有着丰富的MVC框架。本篇文章将介绍一些常用的PHPMVC框架。一、LaravelLaravel是目前PHP中最受欢迎的MVC框架之一,也是一个开放源代码的PHPWeb框架,由TaylorOtwell创建。Laravel采用了现代的PH

php mvc有Laravel、Symfony、CodeIgniter和Yii。1、Laravel,提供了丰富的功能和工具,用于快速开发高效的Web应用程序;2、Symfony,提供可复用的组件和模块;3、CodeIgniter,提供简单而强大的开发工具和功能;4、Yii,提供了丰富的功能和灵活的扩展性。

php的mvc框架有:1、Laravel,功能强大的MVC框架,有活跃的社区,提供大量的文档和教程;2、Symfony,稳定强大的MVC框架,提供了高度可定制的组件和Bundle的概念;3、CodeIgniter,简单灵活的MVC框架,具有小巧的体积和快速的执行速度;4、Yii,高性能的MVC框架,提供丰富的特性;5、Phalcon,高性能的MVC框架;6、CakePHP等等。

php中mvc框架有Laravel、Symfony、CodeIgniter、Yii、Phalcon、CakePHP和Zend Framework等。详细介绍:1、Laravel是目前最受欢迎的PHP框架之一,提供了很多有用的功能和工具,如路由、ORM、数据库迁移、模板引擎等,Laravel具有简洁的语法和优雅的设计,使得开发人员可以快速构建高性能的Web应用程序等等。

PHP7.0中的MVC框架有哪些?随着互联网应用的高速发展,越来越多的网站和企业应用选择了采用PHP编程语言开发,而MVC(Model-View-Controller)架构已成为PHP开发中常用的架构模式。MVC的基本思想是将应用程序分为三个模块:模型(Model)、视图(View)和控制器(Controller),提高程序的可维护性和可扩展性。在PHP7.
