构建自己的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

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

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

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

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

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

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

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

随着Web开发的快速发展,MVC模式成为了WEB开发中重要的一部分。而PHP作为一种非常流行的Web开发语言,因此,学习PHP的MVC框架,成为了重要的一步。那么,本文就从以下三个方面,来深入探究PHP函数的MVC框架。一、MVC架构模式MVC是一种设计模式,将应用程序分成三个部分:模型、视图和控制器。模型处理应用程序数据和业务逻辑。视图管理用户界面和呈现数


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Dreamweaver CS6
Alat pembangunan web visual

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular
