构建自己的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 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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 フレームワークです。この記事では、開発者が MVC フレームワークをよりよく理解し、使用できるようにすることを目的として、Go 言語での MVC フレームワークの開発について詳しく紹介します。 1. MVC フレームワークの概要 MVC (Model-View-Controller) はソフトウェア開発におけるアーキテクチャ パターンであり、アプリケーションをモデルとビューの 3 つのコア部分に分割します。

インターネット技術の発展に伴い、MVC フレームワークは Web 開発で最も人気のあるアイデアおよびモデルになりました。その中でもPHP言語はWeb開発言語として豊富なMVCフレームワークも備えています。この記事では、一般的に使用される PHPMVC フレームワークをいくつか紹介します。 1. Laravel Laravel は現在、PHP で最も人気のある MVC フレームワークの 1 つであり、Taylor Otwell によって作成されたオープンソースの PHPWeb フレームワークです。 Laravelは最新のPHを採用

PHP mvc には、Laravel、Symfony、CodeIgniter、Yii が含まれます。 1. 効率的な Web アプリケーションを迅速に開発するための豊富な機能とツールを提供する Laravel、2. 再利用可能なコンポーネントとモジュールを提供する Symfony、3. シンプルで強力な開発ツールと機能を提供する CodeIgniter、4. 豊富な機能を提供する Yii機能と柔軟な拡張性。

PHP の mvc フレームワークには次のものが含まれます: 1. Laravel、多数のドキュメントとチュートリアルを提供する活発なコミュニティを持つ強力な MVC フレームワーク; 2. Symfony、高度にカスタマイズ可能なコンポーネントとバンドルの概念を提供する安定した強力な MVC フレームワーク; 3. CodeIgniter、シンプルで柔軟性があり、サイズが小さく実行速度も速いMVCフレームワーク、4. 豊富な機能を備えた高性能MVCフレームワークYii、5. 高性能MVCフレームワークPhalcon、6. CakePHPなど。

PHP の MVC フレームワークには、Laravel、Symfony、CodeIgniter、Yii、Phalcon、CakePHP、Zend Framework などが含まれます。詳細な紹介: 1. Laravel は現在最も人気のある PHP フレームワークの 1 つであり、ルーティング、ORM、データベース移行、テンプレート エンジンなど、多くの便利な機能とツールを提供しています。高性能の Web アプリケーションなどを迅速に構築できます。

PHP7.0のMVCフレームワークとは何ですか?インターネット アプリケーションの急速な開発に伴い、開発に PHP プログラミング言語を使用する Web サイトやエンタープライズ アプリケーションがますます増えており、MVC (Model-View-Controller) アーキテクチャが PHP 開発で一般的に使用されるアーキテクチャ パターンになっています。 MVC の基本的な考え方は、アプリケーションをモデル、ビュー、コントローラーの 3 つのモジュールに分割して、プログラムの保守性と拡張性を向上させることです。 PHP7では。
