検索

php mvcの簡単な実装

Nov 20, 2020 am 09:07 AM
mvcphp

php mvc 実装方法: 最初にシステム ディレクトリを定義し、次にコントローラーを取得し、最後にブラウザに「path/to/yoursite/index.php?controller=test&action=test」と入力してテストを成功させます。

php mvcの簡単な実装

推奨: 「PHP ビデオ チュートリアル

PHP で MVC 開発を実装する最も簡単な方法 - —単一のエントリポイント

今日は、MVC についての私の理解の一部と、開発プロセス中に独自のフレームワークの 1 つを実装するプロセスについて詳しく書き始めます。私の言ったことは間違っているかもしれないので、修正してください。

MVC に関する教材は Web サイトにたくさんあります。ここでは詳しく説明しません。わからない場合は、Baidu で「MVC」を検索することをお勧めします。欲しいものを見つけることができます。ここでは実際のPHP開発におけるMVCの理解をお話します。 M、モジュール、主なタスクは、必要な方法でデータベースまたは他のファイル システムからデータを読み取ることです。 V、ビュー、私の理解では、主にデータを HTML 形式でユーザーに表示する責任があります。 Cのコントローラーは主にビジネスロジックを担当しており、例えばログインインターフェースを表示したい場合、コントローラーのuserControllerのloginActionメソッドを呼び出して表示する必要があります(モジュールを呼び出す必要はないかもしれません)。別の例として、ログイン チェックを実行する場合、userController メソッド.checkAction を呼び出して論理処理を実行できます。 (Verdana の訂正を感じます_)。

Quote

M はモデルを指します。コントローラーはビジネス ロジックには関与せず、ビジネス ロジック部分全体をモデル層に配置する必要があります。コントローラーはリクエストを分散する役割のみを果たします、つまり、現在のリクエストを取得し、データを取得するためにどのモデルを呼び出すかを決定し、それをページをレンダリングするどのビューに割り当てます。 MVC を単一のエントリ ポイントに特別に実装するのが最善であると考えます。

単一エントリポイントとは何ですか?いわゆる単一エントリ ポイントとは、アプリケーション全体の入口が 1 つだけあり、すべての実装がこの入口を通じて転送されることを意味します。たとえば、上ではプログラムの単一エントリ ポイントとしてindex.php を使用しています。 、これはあなたが制御できます。

なぜ単一のエントリポイントが必要なのでしょうか?単一のエントリ ポイントにはいくつかの利点があります。 まず、システムによってグローバルに処理される一部の変数、クラス、およびメソッドをここで処理できます。たとえば、データの予備フィルタリングを実行する必要があり、セッション処理をシミュレートする必要があり、いくつかのグローバル変数を定義する必要があり、さらにいくつかのオブジェクトまたは変数をレジスタに登録する必要もあります (主にグローバルに実装されています。詳細については、を参照してください)。以前の翻訳記事の一部「PHP でのグローバル変数の使用」)。次に、プログラムの構造がより明確になります。もちろん、この他にもメリットはたくさんありますので、すべてを記載することはできませんが、詳しく体験していただけます。

もちろん、シングルポイント エントリにはいくつかの欠点があります。たとえば、システムが大規模になると、特にシステムにまったく関係のない 2 つの機能がある場合、エントリ ポイントを 1 つのポイントだけにすることは不可能になります。ただし、これはスケーラブルであり、複数のエントリを展開できることを嬉しく思います。たとえば、最近の大規模なプロジェクトでは、バックエンドの管理とフロントエンドは関連していないため、入り口を 2 つ用意し、1 つはindex.php、もう1つはadmin.phpとします。しかし、これは単一点の入り口が良くないという意味ではありません(具体的な意味は理解できます)。

それでは、単一のエントリ ポイントを実装するにはどうすればよいでしょうか?これがこのセクションの焦点です。一般的に言えば、これは URL のアドレス マッピングを通じて実現されます (これについては以前に記事「PHPCHINA に関するいくつかの質問に答える: URL マッピング」で説明しています。これは、シングル ポイント エントリの中核を実装しています。ここでは、それを具体的に実装し、以下にデモを示します。 )。シングル ポイント オブ エントリで最も重要なことは、URL を通じてパラメータを渡してプログラムの割り当てを実現することです。具体的には、たとえば、アドレスがindex.php?controller=test&action=test の場合、リクエストは転送されます。 Index.php を通じて対応する testController ファイルにアクセスし、対応する testAction メソッドを実行します (ここでのコントローラーとメソッドの名前は、Zend Framework の概念を参照しています)。

以下では、最も単純な方法を使用して、上記の単一エントリ ポイントを実装します (簡単にするために、ここでは URL マッピングを使用していません)

/index.php
<?
/**
* MVC演示demo
* 仅仅实现最基本的MVC功能,不包含安全处理,数据过滤,及其他优化措施。
*/
define(‘SITE_PATH’,str_replace(‘‘,’/’,dirname(FILE)));//定义系统目录
controller=(!empty(controller=(!empty(_GET[‘controller’]))?GET[‘controller′]:‘index′;
//获取控制器,默认indexGET[‘controller′]:‘index′;
//获取控制器,默认indexaction=(!empty(GET[‘action′]))?GET[‘action′]))?_GET[‘action’]:‘index’;
//方法名称,默认index
controllername=controllername=controller.‘Controller’;
controllerfile=SITEPATH.‘/app/controller/′.controllerfile=SITEPATH.‘/app/controller/′.controller_name.‘.class.php’;//获取控制器文件
if(file_exists(controller_file)){ 
require_once(controller_file)){ require_once(controller_file);
controller=newcontroller=newcontroller_name();
controller->{controller->{action.‘Action’}();
}else{
die(‘找不到对应的控制器!’);
}
?>
对应的一个演示demo
/app/controller/testController.class.php(注意路径)
<?
/**
* MVC演示demo
* 仅仅实现最基本的MVC功能,不包含安全处理,数据过滤,及其他优化措施。
*/
class testController
{
function testAction(){
echo ‘Hello,World!’;
}
}
?>

ブラウザを開いて次のように入力します。 http ://path/to/yoursite/index.php?controller=test&action=test (それに応じてパスを変更するように注意してください)、Hello, World! が表示された場合、MVC の最初のステップであるシングル ポイント エントリを意味します。成功しました!

以上がphp mvcの簡単な実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
酸とベースデータベース:違いとそれぞれを使用するタイミング。酸とベースデータベース:違いとそれぞれを使用するタイミング。Mar 26, 2025 pm 04:19 PM

この記事では、酸とベースのデータベースモデルを比較し、その特性と適切なユースケースを詳述しています。酸は、財務およびeコマースアプリケーションに適したデータの整合性と一貫性を優先し、ベースは可用性に焦点を当て、

PHPセキュアファイルアップロード:ファイル関連の脆弱性の防止。PHPセキュアファイルアップロード:ファイル関連の脆弱性の防止。Mar 26, 2025 pm 04:18 PM

この記事では、コードインジェクションのような脆弱性を防ぐために、PHPファイルのアップロードを確保することについて説明します。ファイルタイプの検証、セキュアストレージ、およびアプリケーションセキュリティを強化するエラー処理に焦点を当てています。

PHP入力検証:ベストプラクティス。PHP入力検証:ベストプラクティス。Mar 26, 2025 pm 04:17 PM

記事では、組み込み関数、ホワイトリストアプローチ、サーバー側の検証などの手法に焦点を当てたセキュリティを強化するためのPHP入力検証のベストプラクティスについて説明します。

PHP APIレート制限:実装戦略。PHP APIレート制限:実装戦略。Mar 26, 2025 pm 04:16 PM

この記事では、Token BucketやLeaky BucketなどのアルゴリズムやSymfony/Rate-Limiterなどのライブラリを使用するなど、PHPでAPIレート制限を実装するための戦略について説明します。また、監視、動的に調整されたレートの制限、および手をカバーします

PHPパスワードハッシュ:password_hashおよびpassword_verify。PHPパスワードハッシュ:password_hashおよびpassword_verify。Mar 26, 2025 pm 04:15 PM

この記事では、パスワードを保護するためにPHPでpassword_hashとpassword_verifyを使用することの利点について説明します。主な議論は、これらの関数が自動塩の生成、強力なハッシュアルゴリズム、およびSecurを通じてパスワード保護を強化するということです

OWASPトップ10 PHP:共通の脆弱性を説明し、軽減します。OWASPトップ10 PHP:共通の脆弱性を説明し、軽減します。Mar 26, 2025 pm 04:13 PM

この記事では、PHPおよび緩和戦略におけるOWASPトップ10の脆弱性について説明します。重要な問題には、PHPアプリケーションを監視および保護するための推奨ツールを備えたインジェクション、認証の壊れ、XSSが含まれます。

PHP XSS予防:XSSから保護する方法。PHP XSS予防:XSSから保護する方法。Mar 26, 2025 pm 04:12 PM

この記事では、PHPでのXSS攻撃を防ぐための戦略について説明し、入力の消毒、出力エンコード、セキュリティを向上させるライブラリとフレームワークの使用に焦点を当てています。

PHPインターフェイスvs抽象クラス:それぞれを使用する時期。PHPインターフェイスvs抽象クラス:それぞれを使用する時期。Mar 26, 2025 pm 04:11 PM

この記事では、PHPでのインターフェイスと抽象クラスの使用について説明し、それぞれをいつ使用するかに焦点を当てています。インターフェイスは、無関係なクラスや複数の継承に適した、実装なしで契約を定義します。抽象クラスは共通の機能を提供します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 Mac版

SublimeText3 Mac版

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