ホームページ >バックエンド開発 >PHPチュートリアル >独自の PHP フレームワークを開発するのは非常に簡単で、まったく難しいことではありません。

独自の PHP フレームワークを開発するのは非常に簡単で、まったく難しいことではありません。

卡哇伊
卡哇伊転載
2020-07-16 17:00:343899ブラウズ

独自の PHP フレームワークを開発するのは非常に簡単で、まったく難しいことではありません。

#出発点: 独自のフレームワークを開発することもネイティブ性を発揮する方法であると個人的には理解しています。書いた後は、他のフレームワークを検討するのがはるかに簡単になります。ドキュメントがないか、ドキュメントがほとんどないフレームワークに遭遇した場合は、このアイデアに従って追加できます。または、ネイティブのものを持ってきて実行してください。私が初めて yii2 に出会ったときがそうでした。ドキュメントを読む時間すらなく作業を開始しました。基本的に純粋にネイティブであり、csrf と 2 つの言語を使用しました。 yii2 の....

##フレームワークを作成するための最小限のアイデア

パラメータを受け取って出力する方法。たとえば、設定ファイルを取得する方法は、渡されたパラメータに基づいています (アイデア

1)。通常は、まずファイルが存在するかどうかが判断されます。存在する場合は含める必要があり、新しい場合は新しい必要があります。次に、それを属性に保存します (キャッシュ)

#2。主に呼び出しプロセス: run メソッドに含める必要があるすべての内容

#詳細なアイデア

#1. エントリ ファイルを作成します (手順 2 ~ 5 はすべてエントリ ファイルに記述されます)

2. 定数を定義します (フレームワークの各レベルのディレクトリであるため、毎回長いリストを記述する必要はありません)

//定义框架根目录
//定义核心文件目录路径
//应用目录(包含控制器、模型等)
//是否开启调试
//如果DEBUG为true,将错误显示打开。否则不显示

3. 関数ライブラリの紹介

##

//加载公共方法
//加载核心文件

4. 自動ロード

ロードするクラスが存在するかどうかを確認します。 ヒント: 属性に保存されていますが、実際にはこの属性によって判断されます。

存在する場合は true を返し、存在しない場合は

Load を返します。

ヒント: バックスラッシュの置換

ファイルをロードする場合は、単にインクルードするだけです。 注: このファイルはルート ディレクトリから見つかります。

そうでない場合は、false が返されます。

注: 書き込み後、lib ディレクトリを作成し、ルーティングクラス。テスト

5、スタートアップ フレームワーク

//调用核心文件中的run方法(我的核心文件是core/init.php)
6、ルート分析トリロジー

6.1、隠し入り口ファイル

6.2. url のパラメータを取得します

存在する場合は解析します

通常の場合、まず配列に変換し(処理の便宜上)、異常を確認します状況 (例: URL のみ コントローラーが入力されましたが、入力メソッドがありません。メソッドにデフォルト値を与えます)

URL 上の追加パラメーター

通常の状況

異常な状況です。奇数です。

存在しないため、デフォルト値が与えられます。

6.3. 対応するコントローラーとメソッドを返します (実際には、 6.2 の属性に保存され、返されたものと見なすことができます)

7. コントローラーをロードします

#コントローラーは run() 中にロードする必要がありますルートから解析されたコントローラー名をコントローラー ファイルのパスに入れます。

コントローラー ファイルが存在するかどうかを確認し、存在する場合は new を使用します。存在しない場合は、エラーがスローされます。

注: モジュールの概念はここで紹介されています\app はアプリケーションではなくモジュールであり、成熟したフレームワークより 1 層下です

8. 結果を返します

実行して試してみます。実際、この段階でファイルを作成するためのフレームワークが完成しました。次のステップはフレームワークを拡張することです

9. コントローラーでモデル クラスを接続

データベースに接続するためのモデル クラスを lib に作成しますコントローラーで新しいモデル クラスを作成します

#10. ビュークラスを記述する

assignメソッドとdisplayメソッドは初期化(core/init.php)クラスに記述します。

注: 最初に値を割り当て、次にテンプレート ファイルを含めます。

その後、コントローラーはこのクラスを継承して呼び出します。

#11. 設定クラスの書き込み

## 新しい設定ファイル クラスの作成 # 単一の設定ファイルを記述する方法 (

ヒント: 取得するのでパラメータの受け渡しは必須です。パラメータの 2 つ、設定項目、設定ファイル名。パラメータを出力して考えます

)

# すべての設定ファイルを取得する方法を書く

リマインダー: さまざまな設定ファイル (データベース、ルート、ファイルなど) 用に新しい設定ファイル ディレクトリを作成します。ルート、ルーティング はい、ログ...)

テスト: 構成ファイルは適切に動作しています

12. ログ クラスの書き込み

            //1、判断配置文件是否存在,存在就include
            //2、判断配置项是否存在,存在直接给缓存到属性中
            //3、判断属性中有无缓存,有就直接返回属性中存的

ログの作成class

ドライバーディレクトリの作成

#ログ設定ファイルの作成

13、使用composer:编写json文件,自己的框架上到github上供人家使用

第1个类库报错的地址:https://github.com/filp/whoops

第2个类库酷炫的打印变量:"s

"symfony/var-dumper":"*"//更帅气变量输出的效果
ymfony/var-umper":"*"//更帅气变量输出的效果

第3个类库数据库的地址:http://medoo.lvtao.net/1.2/doc.php

第4个类库模板引擎的地址:https://twig.symfony.com/doc/2.x/intro.html#installation

镜像网址:https://pkg.phpcomposer.com/

注意:下图很重要

14、使用medoo数据库类

如果自己封装pdo可能会有什么想象不到的漏洞,这样我们就不如直接用现成的类库加载

http://medoo.lvtao.net/

思路:先将原来继承的pdo换成该类库,在封装模型控制器调用

15、模板引擎类库

思路:修改display方法,改成类库的,还有模板布局

剩下其余的扩展就因人而异了,想不到的话,可能去参考成熟的框架

这里写2个封装好的方法

封装post接收方法(给大家做参考思路)

封装跳转方法

更多教程:《php教程

以上が独自の PHP フレームワークを開発するのは非常に簡単で、まったく難しいことではありません。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。