构建自己的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框架有:1、Laravel,具有簡單、優雅和可擴展的語法,提供了豐富的功能和強大的開發工具;2、Symfony,以靈活性和可擴展性而聞名,提供了許多組件和工具;3、CodeIgniter,簡單而快速的MVC框架,擁有清晰簡潔的程式碼和輕量級的體量,適用於快速開發小型和中型的Web應用程式;4、Yii,高效能的MVC框架,注重安全性和可擴展性等等。

php開源mvc框架有Laravel、Symfony、CodeIgniter、Yii和Phalcon等。詳細介紹:1、Laravel是一個流行的PHP框架,它提供了簡潔優雅的語法和豐富的功能,它具有強大的路由系統、資料庫抽象層、佇列處理、快取管理和認證功能等,Laravel還提供了一個活躍的社群和廣泛的文件資源,使得學習和使用變得更加容易;2、Symfony等等。

隨著網路科技的發展,MVC框架成為了Web開發中最受歡迎的一種想法和模式。其中,PHP語言作為Web開發語言,也有著豐富的MVC架構。本篇文章將介紹一些常用的PHPMVC架構。一、LaravelLaravel是目前PHP中最受歡迎的MVC框架之一,也是開放原始碼的PHPWeb框架,由TaylorOtwell創建。 Laravel採用了現代的PH

隨著網路技術的發展和全球化的趨勢,越來越多的開發者選擇使用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,提供了豐富的功能和靈活的擴展性。

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具有簡潔的語法和優雅的設計,使得開發人員可以快速建立高效能的網路應用程式等等。

PHP7.0中的MVC框架有哪些?隨著網路應用的高速發展,越來越多的網站和企業應用程式選擇了採用PHP程式語言開發,而MVC(Model-View-Controller)架構已成為PHP開發中常用的架構模式。 MVC的基本想法是將應用程式分為三個模組:模型(Model)、視圖(View)和控制器(Controller),提高程式的可維護性和可擴展性。在PHP7.
