マイナー [PHP フレームワーク] 3. ルーティング、コントローラー、ビュー、マイナー フレームワーク_PHP チュートリアル
Jul 12, 2016 am 08:49 AMマイナー【PHPフレームワーク】3. ルーティング、コントローラー、ビュー、マイナーフレームワーク
3.1 ルーティング
本格的な Web アプリケーションには美しい URL が絶対に必要です。こうすることで、index.php?article_id=57 のような醜い URL が非表示になり、/read/intro-to-symfony のようなより一般的な URL に置き換えられます。
3.1.1 ルーティング設(shè)定
設(shè)定ファイルはapp/Config/routes.phpですリーリー
上記のコードを例として、エレガントな (laravel 病...) ルーティングを構(gòu)成する方法を詳しく説明します「/demo/{productName}」は、ルーティングの一致ルールです。構(gòu)成內(nèi)の required は、productName が満たさなければならない正規(guī)の條件を指定します。フレームワークの実際の動(dòng)作中に、ルーティング ルール + required が正規(guī)表現(xiàn)に解析されます。 /demo /(w+) 、URL (例: xxx.xxx.xxx/demo/testproduct) がこの通常のルールに一致すると、構(gòu)成內(nèi)のコントローラーのアクションが実行されます。具體的な実行は次のとおりです。 FooController->bar ($製品名) ;
ルーティング ルールの中括弧 (productName) の內(nèi)容が bar メソッドのパラメーターであることがわかります。したがって、ルートを照合するときは、ルーティング ルールが特定のコントローラー メソッドのパラメーターの數(shù)と一致している必要があることに注意してください。一致しないと、ControllerException がスローされます。
3.1.2 デフォルトのルーティング設(shè)定
Controllerを定義するたびにルートを設(shè)定しなければならないと、開発効率の低下につながります。この問題の発生を防ぐために、Minorではデフォルトのルーティング機(jī)構(gòu)が提供されています。 http://xxx.xxx.xxx/demo/foo/bar にアクセスすると、AppModulesDemoFooController の bar メソッドが実行されます。つまり、デフォルト ルートは次のとおりです。http://xxx.xxx.xxx/{モジュール名}/{コントローラ名}/{メソッド名}
3.1.3 デメリット ご覧のとおり、マイナーのルーティングは強(qiáng)力ではありません。リクエストメソッドの制限、HTTPS の制限、およびフィルターはサポートされていません。
3.2コントローラー
3.2.1 獨(dú)自のコントローラーを作成する Controllerの定義は非常にシンプルで、MinorControllerControllerの基底クラスを継承するだけです(もちろん継承する必要はありませんが、基底クラス內(nèi)のメソッドやプロパティは使えないのでわかりやすいです)。 app/Modules/Demo/Controller/ フォルダーに移動(dòng)し、ファイル FooController.php:
を作成します。 リーリーxxx.xxx.xxx/demo/foo/bar (デフォルトルート、獨(dú)自ルート設(shè)定も可能) にアクセスすると、Hello World が返されることがわかります。
3.2.2 URL生成 Url の gen メソッドを呼び出すと、デフォルトのパスをルーティング ルールに準(zhǔn)拠した URL に変換できます
リーリー3.1.1のルーティングに従ってUrl::gen('/demo/foo/bar?productName=test')が設(shè)定されている場合、/demo/testが返されます。
3.2.3 ページジャンプリダイレクト、リダイレクトフォワード Minor には、redirect、forward、forwardUrl という 3 つのジャンプ メソッドが用意されています (これら 3 つは、MinorControllerController の保護(hù)されたメソッドです)。
別の URL にジャンプするときは、コントローラーで次のように呼び出すことができます: $this->redirect($url);
別の URL にリダイレクトする場合、コントローラー內(nèi)で次のように呼び出すことができます: $this->forwardUrl($url); (このメソッドの実裝は、実際にはルーティングと URL リクエストのコントローラーとメソッドを解析することです)それから forward($controller, $action, $param)) を呼び出します
別のメソッドに転送する場合、コントローラー內(nèi)で次のように呼び出すことができます: $this->forward($controller, $action, $params); (パラメーター $controller は、名前空間を含むコントローラーのクラス名です。 )
例:
リーリー
3.2.4 リクエストパラメータの取得 MinorRequest の get($paramName, $defaultParamValue = null) メソッドまたは post($paramName, $defaultParamValue = null) メソッドを呼び出して、リクエスト メソッドを取得します。
コントローラー內(nèi)で次のように呼び出すことができます。 リーリー
3.2.5 リクエストメソッドの取得 MinorRequest の getMethod() メソッドを呼び出して、要求されたメソッドを取得します。 リーリー
3.3 ビュー
Minor は非常に強(qiáng)力なテンプレート エンジンを提供します。このテンプレート エンジンの名前は PHP です。はい!そうですよね、PHP。なぜマイナーはsmartyやTwigのようなテンプレートエンジンを提供しないのでしょうか? 必要がないので、PHP 自體で十分です。Minor がテンプレート エンジンを構(gòu)築すると、間違いなく、Minor を使用するのが難しくなります。そのため、Minor は、ビュー ファイルの言語として PHP を直接使用します。
3.3.1 コントローラーでのビューの使用
コントローラーでビューを使用するには、 View::render('モジュール名:コントローラー名:ビューファイル名', ['param1key' => 'param1value', 'param2key' => 'param2value' を呼び出すだけです。 . .]); 例:
render函數(shù)的第二個(gè)參數(shù)(['param1key' => 'param1value', 'param2key' => 'param2value' ...])就是向視圖文件中傳遞的變量,我們可以在視圖文件中使用這些變量: 3.3.2 視圖內(nèi)置函數(shù) Minor提供了兩個(gè)視圖文件中可以使用的函數(shù): 使用: 這兩個(gè)函數(shù)定義在app/Resource/functions.php文件中,你可以在這個(gè)文件中自定義你需要的視圖函數(shù)。 3.4 響應(yīng) 可以在控制器中通過調(diào)用App對象的getMinorResponse()方法來獲取當(dāng)前MinorResponse對象?!inorResponse類提供了六個(gè)方法分別是: ?<span>class</span> FooController <span>extends</span><span> Controller
{
</span><span>public</span> <span>function</span><span> bar()
{
</span><span>$param1</span> = 'Hello'<span>;
</span><span>$param2</span> = 'World'<span>;
</span><span>return</span> View::render('Demo:Foo:bar.php', ['param1' => <span>$param1</span>, 'param2' => <span>$param2</span><span>]);
}
} </span>
文件:app/Modules/Demo/Controller/Tpl/Foo/bar.php<br /><?php echo $param1key;?><br /><?=$param2key ?>
<span>function</span> include_tpl(<span>$module</span>, <span>$controller</span>, <span>$tpl</span><span>)
{
</span><span>require_once</span> (!<span>defined</span>('APP_DIR') ? APP_DIR : <span>realpath</span>(__DIR__ . '/../../app/') .DIRECTORY_SEPARATOR) . 'Modules' . '/' . <span>$module</span> . '/Tpl/' . <span>$controller</span> . '/' . <span>$tpl</span><span>;
}
</span><span>function</span> url(<span>$path</span><span>)
{
</span><span>return</span> Url::gen(<span>$path</span><span>);
}</span>
<span>html>
</span><span><?</span><span>php include_tpl('Public', 'Public', 'header.php');</span><span>?></span>
<span><</span><span>body</span><span>></span>
<span><</span><span>h1</span><span>></span>Hello!<span></</span><span>h1</span><span>></span>
<span><</span><span>a </span><span>href</span><span>="<?php url('/demo/foo/bar?productName=testpro');?>"</span><span>></span>
<span></</span><span>body</span><span>></span>
<span></</span><span>html</span><span>></span>
<span>public function send(); // 用于將響應(yīng)對象發(fā)送給客戶端
public function setHeader($header);// 設(shè)置響應(yīng)頭
public function setContent($content); // 設(shè)置響應(yīng)對象的內(nèi)容
public function beforeContent($content); // 在當(dāng)前已有的內(nèi)容之前添加內(nèi)容
public function appendContent($content); // 在當(dāng)前已有內(nèi)容之后追加內(nèi)容
public function getContent(); // 獲取對象中的響應(yīng)內(nèi)容</span>

ホットAIツール

Undress AI Tool
脫衣畫像を無料で

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

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

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

PHP フレームワークの選択は、プロジェクトのニーズと開発者のスキルによって異なります。 Laravel: 豊富な機(jī)能と活発なコミュニティがありますが、學(xué)習(xí)曲線が急で、パフォーマンスのオーバーヘッドが高くなります。 CodeIgniter: 軽量で拡張が簡単ですが、機(jī)能が制限されており、ドキュメントが少なくなります。 Symfony: モジュール式の強(qiáng)力なコミュニティですが、複雑なパフォーマンスの問題があります。 ZendFramework: エンタープライズ グレードで、安定性と信頼性が高くなりますが、ライセンスが大きく高価です。スリム: マイクロフレームワークで高速ですが、機(jī)能が限られており、學(xué)習(xí)曲線が急です。

開発環(huán)境が異なると、PHP フレームワークのパフォーマンスに違いがあります。開発環(huán)境 (ローカル Apache サーバーなど) は、ローカル サーバーのパフォーマンスの低下やデバッグ ツールなどの要因により、フレームワークのパフォーマンスの低下に悩まされます。対照的に、より強(qiáng)力なサーバーと最適化された構(gòu)成を備えた実稼働環(huán)境 (完全に機(jī)能する実稼働サーバーなど) では、フレームワークのパフォーマンスが大幅に向上します。

PHP フレームワークとマイクロサービスを組み合わせる利點(diǎn): スケーラビリティ: アプリケーションを簡単に拡張し、新しい機(jī)能を追加したり、より多くの負(fù)荷を処理したりできます。柔軟性: マイクロサービスは獨(dú)立してデプロイおよび保守されるため、変更や更新が容易になります。高可用性: 1 つのマイクロサービスの障害が他の部分に影響を與えないため、高可用性が確保されます。実踐的なケース: Laravel と Kubernetes を使用したマイクロサービスのデプロイ ステップ: Laravel プロジェクトを作成します。マイクロサービスコントローラーを定義します。 Dockerfileを作成します。 Kubernetes マニフェストを作成します。マイクロサービスをデプロイします。マイクロサービスをテストします。

PHP フレームワークと DevOps を統(tǒng)合すると、効率と機(jī)敏性が向上します。退屈なタスクを自動(dòng)化し、人員を解放して戦略的タスクに集中させ、リリース サイクルを短縮し、市場投入までの時(shí)間を短縮し、コード品質(zhì)を向上させ、エラーを削減し、部門間のチームのコラボレーションを強(qiáng)化し、ブレークダウンを?qū)g現(xiàn)します。開発と運(yùn)用のサイロ化

PHP フレームワークを使用して人工知能 (AI) を統(tǒng)合し、Web アプリケーションへの AI の統(tǒng)合を簡素化します。 推奨フレームワーク: Laravel: 軽量、効率的、強(qiáng)力です。 CodeIgniter: シンプルで使いやすく、小規(guī)模なアプリケーションに適しています。 ZendFramework: 完全な機(jī)能を備えたエンタープライズ レベルのフレームワーク。 AI 統(tǒng)合方法: 機(jī)械學(xué)習(xí)モデル: 特定のタスクを?qū)g行します。 AIAPI: 事前構(gòu)築された機(jī)能を提供します。 AI ライブラリ: AI タスクを処理します。

PHP フレームワーク拡張ライブラリには、選択できる 4 つのフレームワークが用意されています。 Laravel: 広大なエコシステムとサードパーティ パッケージで知られ、認(rèn)証、ルーティング、検証、その他の拡張機(jī)能を提供します。 Symfony: 高度にモジュール化されており、再利用可能な「バンドル」を通じて機(jī)能を拡張し、認(rèn)証やフォームなどの領(lǐng)域をカバーします。 CodeIgniter: 軽量かつ高性能で、データベース接続やフォーム検証などの実用的な拡張機(jī)能を提供します。 ZendFramework: 認(rèn)証、データベース接続、RESTfulAPI サポートなどの拡張機(jī)能を備えた強(qiáng)力なエンタープライズ レベルの機(jī)能。

PHP フレームワークはアジャイル開発や大規(guī)模プロジェクトで広く使用されており、俊敏性、スケーラビリティ、セキュリティなどの利點(diǎn)を提供します。たとえば、電子商取引 Web サイトでは、Laravel フレームワークを使用してプロトタイプを迅速に作成し、複雑なビジネス ロジックを処理し、セキュリティを確保し、機(jī)能を拡張できます。 PHP フレームワークは、事前定義されたコンポーネントと設(shè)計(jì)パターンを活用することで、開発者がスケーラブルで適切に保守されたアプリケーションを構(gòu)築することを容易にします。

PHP フレームワークと Python フレームワークは、言語機(jī)能、フレームワークの生態(tài)、機(jī)能が異なります。 PHP は主に Web 開発に使用され、學(xué)習(xí)が簡単です。Python には広範(fàn)なライブラリ エコシステムがあります。一般的な PHP フレームワークには、Laravel、CodeIgniter、Symfony などがあります。Python フレームワークには、Django、Flask、Web2py などがあります。実際のケースでは、Laravel はコマンド ラインを使用してブログ モデルとビューを生成しますが、Django は DjangoAdmin と Python スクリプトを使用してブログを作成します。
