Composer を使用して独自の PHP フレームワーク設計 MVC を構築する、composermvc_PHP チュートリアル
Composer を使用して独自の PHP フレームワーク設計 MVC、composermvc を構築します
レビュー
前のチュートリアルでは、codingbean/macaw Composer パッケージを使用して 2 つの単純なルートを構築しました。最初のルートは GET '/fuck' に応答し、もう 1 つはすべてのリクエストを保持します。実際、PHP フレームワークでは、ルーティングを使用してすべてが可能です。したがって、次に私たちがしなければならないことは、MFFC フレームワークをより標準化し、より充実したものにすることです。
これには、PHP フレームワークのもう 1 つの価値が含まれます。つまり、複数人によるコラボレーションを促進するための開発仕様を確立し、開発効率を向上させるために ORM やテンプレート エンジンなどのツールを使用することです。
正式にフォルダーの計画を開始します
新しい MFFC/app フォルダーを作成し、アプリ内にコントローラー、モデル、ビューの 3 つのフォルダーを作成し、MVC の旅を正式に開始します。
(私がLaravelをコピーしたと誰が言った? 私は明らかにRailsをコピーした:-D)
名前空間を使用する
新しいcontrollers/BaseController.phpファイルを作成します:
リーリー新しいcontrollers/HomeController.phpファイルを作成します:
リーリー リーリールートを追加します: Macaw::get('', 'HomeController@home');`、ブラウザを開いて http://127.0.0.1:81/` に直接アクセスすると、次のプロンプトが表示されます:
リーリーHomeController クラスが見つからないのはなぜですか?自動的にロードしないようにしたため、composer.json を次のように変更します。
リーリーcomposer dump-autoload` を実行し、少し待ってから更新すると、次の内容が表示されます (エンコーディングを調整することを忘れないでください):
おめでとうございます。ネームスペースが正常に使用されました。
データベースに接続します
次の内容を含む新しい models/Article.php ファイルを作成します (データベースのパスワードは自分で変更してください):
リーリー リーリー リーリー リーリー リーリー リーリーcontrollers/HomeController.php ファイルを変更します:
リーリー更新すると、自動読み込み設定が更新されていないため、現時点では Article クラスが見つからないという情報が表示されます。
リーリー待っている間に、データベース mffc` を作成し、その中にテーブル記事` を作成し、情報を記録する 2 つのフィールド title` と `content を設計し、少なくとも 1 つのデータを入力します。 mffc データベースを作成した後に次の SQL ステートメントを実行することもできます:
リーリーそれではリフレッシュ!次のページが表示されます:
おめでとうございます! MVC の M と C の両方が実装されました。次に、V (ビュー) の呼び出しを開始します。
コールビュー
models/Article.php を次のように変更します:
リーリークエリ結果を含む配列を返します。 HomeController を変更します:
リーリー保存して更新すると、上記と同じページが表示され、ビューが正常に呼び出されます。
ほとんどの人は、特定のフレームワークを学習することで MVC を理解できます。この場合、そのフレームワークを一度フレームワークから切り離してしまうと、MVC アーキテクチャを自分で設計することはおろか、簡単なページを書くことも不可能になります。実際、そのようなことはありません。方法はたくさんあります。原則は非常に明確です。私の洞察を共有しましょう。
1. PHP フレームワークがどれほど強力であっても、それは PHP であり、PHP の動作原理と基本哲学に従う必要があります。これを理解することで、多くのことが容易に理解できるようになります。2. 論理的に言えば、PHP で作成された Web サイトは php test.php と何ら変わりません。これは、PHP インタープリターにパラメーターとして渡される単なる文字列です。これは、URL に基づいて実行する必要があるファイルとコードを呼び出し、対応する結果を返す複雑な Web サイトにすぎません。
3. 180 個のファイルで構成される CodeIgniter のような「小さなフレームワーク」であっても、ベンダーを含む 3,700 以上のファイルを持つ Laravel のような「大きなフレームワーク」であっても、それらは各 URL によって駆動され、アセンブルされます。実行可能な文字列を取得し、それを PHP インタープリターに渡し、PHP インタープリターから返された文字列を訪問者のブラウザーに渡します。
4. MVC は本質的に、人間の脳のような超低 RAM コンピューターが人間の脳の RAM をはるかに超える大規模なソフトウェアを作成できるように設計されています。 GUIソフトウェアの登場によるコマンドライン出力も視野に入れています。
5. MFFC では、URL 駆動フレームワークの動作は基本的に次のとおりです: エントリー ファイルはコントローラーを必要とし、コントローラーはモデルを必要とし、モデルはデータベースと対話してデータを取得し、それをコントローラーに返します。次に、ビューを要求し、データを入力し、訪問者に戻り、プロセスは終了します。
MVC は単にいくつかのパッケージを作成するだけではなく、アイデアを作成することを目的としています。もちろん、いくつかのパッケージを使用してこのアイデアをインスタンス化できます。たとえば、テーブルがあり、このテーブルをインスタンス化したい場合は、次のものが必要です。いくつかの _get メソッド、_set メソッドなどのフィールドをクラスに含めてから、別のクラスを使用してこのクラスを継承し、追加、削除、変更などのいくつかのメソッドをカプセル化します。このクラスはモデル層として理解でき、次のようにすることができます。このクラスをインスタンス化し、オブジェクトを通じてメソッドを呼び出し、それを顧客に表示するには、ページ ビューでこのファイル クラスを require_noce する必要があります。PHP の C レイヤーと V レイヤーは必要ありません。テンプレートが使用されていない場合 (たとえば、smarty)、PHP はどうですか~ Xiao Kuailing~ Java の純粋なオブジェクト指向のアプローチに限定されませんが、データのセキュリティと保守性の特性を失うことはありません。これがPHPのMVCです〜

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

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

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

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

ホットトピック









