ホームページ  >  記事  >  php教程  >  独自のシンプルな MVC フレームワーク myPHP を手書きする

独自のシンプルな MVC フレームワーク myPHP を手書きする

WBOY
WBOYオリジナル
2016-08-08 08:49:491878ブラウズ

myPHPフレームワーク

MVC のアイデアを採用し、純粋なオブジェクト指向と単一エントリをプロジェクトに適用し、カスタマイズされたフレームワークを実装します。 (自分の興味のある練習)

1. プロジェクトへの単一の入り口

エントリーファイル

myphpindex.php フロントデスク

请 Web サイト上のすべてのリクエストは、ファイル (エントリ ファイル)index.phpadmin.php をリクエストします。入り口は非常にシンプルで、アクセス許可を定義するために使用され、

初期化ファイルを導入します

初期化ファイル

キャラクターセット

パス

設定ファイル

自動読み込み

システム エラー display_errors='on' error_reporting =E_ALL

主に文字セット設定、パス定数設定、設定ファイル、システムエラーなどを実装し、URL 内のモジュールや動作を解析し、モジュールや動作を自動的に配布するために使用されます (

本質はオブジェクトをインスタンス化して呼び出すことです)オブジェクトのメソッド )。アプリケーション

コントローラーC

主にユーザーのリクエストに応じてビジネスロジックの処理を完了します。モデル (M) を呼び出してデータを受信し、ビュー クラスを呼び出してデータを処理し、データをユーザーにエコーします。

モデルM

モデルはデータテーブルに相当し、モデルはクラスとしてコードに反映されます。クラス内のメソッドは、ユーザーのビジネス要求に基づいてデータ テーブルを操作する SQL ステートメントです (ユーザーの要求は最終的に SQL ステートメントとしてモデルに反映されます)。

SQL 文の実行は DB クラス(本フレームワークでは自己カプセル化された PDO クラスを使用)により実行されます。

Vを見る

主に HTML ページにデータを表示するために使用されます。

自分で描いた絵:

MVC の利点: それぞれが互いに干渉することなく独自の役割を実行するため、開発の分業に役立ちます。

コードの再利用に役立ちます。

市場の主流のフレームワークは基本的に MVC の考え方を満たしています。

2. フレームワーク myPHP を構築する

Web サイトでは多くのファイルが使用されるため、ディレクトリを使用してそれらをカテゴリに保存するのが合理的な方法です。

1. ディレクトリ構造:

フロントエンド部分とバックエンド部分がある Web サイトの場合、2 つの実装ソリューションがあります:

1. デュアルホスト (2 つのドメイン名)、フロントデスクとバックデスクがそれぞれ 1 つのドメイン名に対応します。安全です

2. フロントエンドとバックエンドは同じホストを共有します。便利(初回プラン)

X: 自分の環境、myphp、Web サイトのルート ディレクトリのパスに従ってください

X: 独自の環境のパスに従って myphpAdmin Web サイトのバックエンドのメイン ディレクトリ

ここで作成されたフォルダー:

2. ホストを作成する

httpd-vhosts.conf 設定ファイルで設定します

3. エントリーファイル

/myphp/

にindex.phpファイルを作成します

説明:

エントリーファイルにACCESS定数を定義し、それ以降のすべてのPHPファイルでこの定数を判定し、存在すれば正当なアクセス、存在しなければ不正なアクセスを意味します

インポートされた Application.class.php ファイルでは名前空間が使用されているため、Application クラスにアクセスするときは非修飾アクセスを使用する必要があります。 CoreApplication::run();

展開:

プロジェクトの単一のエントリ ポイントを実現するもう 1 つの方法は、Apache の書き換えメカニズムを使用することです。

4. 初期化ファイル

a. コアディレクトリに Application.class.php ファイルを作成します

最初にアクセス可能かどうかをテストします。注意

: 以下のクラス名のスクリーンショットは作成しません。すべてのメソッドはクラス内にあります。

b. Application クラスで setChar メソッドを作成し、文字セットの設定を完了します

プライベート静的メソッドを作成した後、それを有効にするために単一のアウトレットとしてパブリック静的メソッドにアクセスする必要があります: 注: 以下の他のメソッドの単一アウトレットのスクリーンショットはこれ以上撮りません。それらはすべてここにあります。

c. システムエラーの処理方法を設定します

通常、開発を行うときは、ユーザーにエラーメッセージや不親切なインターフェイスが表示されないように、php.ini

の設定ファイルdisplay_errors=offでオフにするのが一般的です。

d、ディレクトリ定数を定義します

phpファイルは頻繁にファイルをインポートするため、インポートされたファイルはディレクトリに保存され、一元管理とメンテナンスの便宜を図るため、ディレクトリ定数としてディレクトリの絶対パスが設定されます。

(echo、var_dumpは、必要な情報が正しいかどうかを確認するためにデバッグを実行することです)

え、設定ファイルを紹介します

設定ファイル内の設定情報は、通常、Web サイト内で変更される可能性のある情報ですが、変更されることはほとんどありません

設定ファイルmyphp/config/config.phpを作成します

説明:

PHP ファイルでのリターンは、ステートメント (include、require) を含むファイルにデータを返すことです

概要:

グローバル変数 グローバル世界のみ

ローカル変数は定義された関数内にのみ存在します

クラス属性はメソッド間で使用できます

グローバル定数はクラス間で使用できます

$_SESSION は複数のスクリプト間で使用できます

f、自動読み込み

__autoload(); PHP 自動読み込みメカニズムによって呼び出されます

spl_autoload_register(); PHP によって提供され、__autoload() に似た複数の関数を自動読み込みメカニズムに追加できます。

デバッグは単一のエントリでテストされます:

他のフォルダーの自動ロード: 通常、クラスファイルを含むフォルダーのみがロードされます

指定した関数を自動読み込み関数として登録します:

手順

すべてのloadCore、loadController、loadModelなどはautoLoadによって呼び出されます。

run

メソッドで

autoLoadが再度呼び出されます

すべてのクラスのインスタンス化とクラスメソッドの移動はindex.phpにあります

5. URLを分析する

すべてのリクエストの本質は URL であり、すべてがアプリケーションをリクエストします。アプリケーションにユーザーのリクエストと、どのクラス ファイルのどのメソッドを処理するかを正確に認識させたい場合、Web サイトにはすべての URL ルールに対して特定の設定が必要です。クラスファイル名にも特定のルールが必要です:

l URL ルール:

http://localhost/index.php?module=クラス名&action=クラス内のメソッド名

l クラスの命名規則:

コントローラークラスの場合:

クラス名Controller ファイル名:クラス名Controller.class.php

モデルクラスの場合:

クラス名Modelファイル名:クラス名Model.class.php

6.配布リクエスト

(本質は、コントローラーを動的にインスタンス化し、コントローラーのメソッドを呼び出すことです)

7. オープンセッション

注: すべてのメソッドは 1 つの出口からアクセスする必要があります

概要:

l すべての php ファイルは、index.php ファイル内で実行されます。

l アプリケーションはコントローラー ファイルのみを処理します

l コントローラー コントローラー ファイルはモデル モデル ファイルを処理します

l アプリケーションがユーザーの要求に従ってクラス内のメソッドを正確に呼び出すことができる理由は、完全に定義した URL ルールとクラス命名ルールに依存します。

アプリケーション名前空間:

名前空間の命名規則は、ファイルが配置されているディレクトリ名を名前空間名として使用することです。

スペースが含まれる場合は、クラス名の前にスペース名があることを考慮する必要があります。

8.エフェクト表示

URL にアクセスすると、デフォルト ルートが転送されます:

URL を介して他のコントローラーのメソッドにアクセスする

追加: pathinfo モードに $_SERVER['PATH_INFO'];

を渡すことができます

大まかに説明すると、まだ学ぶことがたくさんあります。

モットー: 人生とは、常に学び、また学び続けることです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。