前の記事では、空の Composer プロジェクトを作成しました。この記事では、ルーティングを構築する方法について説明します。
有名な CodeIgniter フレームワークは、多くの人にとって PHP 開発の入門フレームワークであり、私が Web サイトの構築方法をゼロから学び始めたフレームワークでもあります。 CI では多くのことを学びましたが、その中でも MVC の深い理解とフレームワークの性質の理解は私に最も大きな影響を与えました。フレームワークを利用して開発効率を向上させるという観点から見ると、フレームワークの本質はルーティングです。
まず、GitHub で検索してみましょう: ここをクリックして検索結果を表示します。
https://github.com/NoahBuscher/Macaw を推奨します。対応する Composer パッケージは、GitHub 上で名前を変更しているはずです。これにより、問題が発生する可能性があります。 Macaw パッケージのインストールを開始し、composer.json を変更しましょう:リーリー
コンポーザーのアップデートを実行すると、次のディレクトリが表示されます。
この時点で、Macaw パッケージは正常にインストールされました。
以下は奇跡を目撃する瞬間です!私たちはMFFCに命を吹き込み、本当に運営していきます!
新しい MFFC/パブリック フォルダーを作成します。このフォルダーはユーザーに唯一表示される部分になります。フォルダー内に新しいindex.phpファイルを作成します:
上段はComposerの自動読み込み機能の導入、下段はルーティング設定ファイルの読み込みを示しています。新しい MFFC/config フォルダーを作成し、その中に次の内容の新しい routs.php ファイルを作成します:
リーリーMacaw のドキュメントは https://github.com/NoahBuscher/Macaw にあります。実際、ほとんどのフレームワークと同じで、「すべての非静的ファイルをポイントします。」 「index.php」へ。
次に、Apache または Nginx を使用して、特定のポートを MFFC/public ディレクトリに割り当てます。この手順では、Apache または Nginx を使用することを強くお勧めします。
PHP 組み込み HTTP サーバーを使用する場合:
リーリールートを生成する Macaw::get('fuck' は、応答するには Macaw::get('/fuck' として記述する必要があります。)
現在のコードは、Apache + mod_php および Nginx + php-fpm を問題なく使用しています。ローカルでポート 81 をバインドしました。http://127.0.0.1:81/fuck にアクセスすると、次のことがわかります:
ページが文字化けする場合は、エンコードをUTF-8に調整してください。上記のページが正常に表示されたら、ルーティング設定は成功です。おめでとうございます。
Macaw にはファイルが 1 つしかなく、空白行を削除するのに 100 行強しかかかりません。コードを通してそれがどのように動作するかを直接確認できます。以下で簡単に分析してみましょう:
2. ルーティング ファイルに Macaw クラスをロードしました:「use NoahBuscherMacawMacaw;」で、静的メソッド::get() を 2 回呼び出しました。このメソッドは MFFC/vendor/codingbean/macaw/Macaw によって使用されます。 .php の __callstatic() が引き継ぎます。
4.__callstatic() は非常に単純なことを行います。ターゲット URL (つまり /fuck)、HTTP メソッド (つまり GET)、およびコールバック コードを 3 つの Macaw クラス $routes、$methods、$callbacks の静的メンバー変数にプッシュします。 (配列)。
5. ルーティング ファイルの最後の行にある Macaw::dispatch(); メソッドは、現在の URL が実際に処理される場所です。直接照合できる場合はコールバックが直接呼び出され、直接照合できない場合は通常のルールが照合に使用されます。
独自の PHP 開発環境を構築したいのですが、業界ではどのようなフレームワーク + テンプレート エンジンが一般的ですか?
PHP はフレームワークのルーティングメカニズムをどのように学習しますか?
zend、symphony、または yii を使用したことがある場合は、ソース コードを学ぶことができます。
主に、MVC フレームワークの場合のように、擬似静的を通じて単一のエントリを実現します。 Apache の疑似静的解析を通じてすべてのリクエストを指定されたファイルに転送し、PHP の $_SERVER[] グローバル変数を使用してリクエストのパス文字列を取得し、それを解析して、指定されたクラスに割り当てて処理します。 、 それで。
最も簡単な方法は、.htaccess ファイルを作成することです。ファイルの内容が送信されます
ErrorDocument 500 'mod_rewrite を有効にする必要があります'
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} ! -d
RewriteRule ^(.*)$index.php
このファイルをルートディレクトリに置きます。このファイルの機能は明らかです。すべてのリクエスト パスをindex.phpに転送し、index.php内のリクエスト文字列を判断してルート解析関数にアクセスします。