php mvcの簡単な実装

藏色散人
藏色散人オリジナル
2020-11-20 09:07:482531ブラウズ

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 までご連絡ください。