ホームページ >バックエンド開発 >PHPチュートリアル >phpのmvcの原理は何ですか? PHP の mvc 実装原理の紹介 (コード付き)

phpのmvcの原理は何ですか? PHP の mvc 実装原理の紹介 (コード付き)

不言
不言オリジナル
2018-07-25 15:26:242845ブラウズ

PHP の MVC の一部は理解しやすいです。たとえば、M は特定のビジネス ロジックを完成させるモデル Model、V は情報の表示を担当するビュー ビュー、C はコントローラ コントローラ、これを担当します。命令の発行と実行方法。要求がフロントデスクからいつ送信されるかを区別し、それを処理するために使用する方法を決定します。では、PHP における MVC 原則の実装とは何でしょうか?コードを使用して MVC の原理を詳しく理解しましょう。

1. ファイル構造
3 つのフォルダーを作成します
controller フォルダーにはコントローラー ファイルが格納されます
view フォルダーにはビュー ファイルが格納されます
model フォルダーにはデータ ファイルが格納されます
Create 1 唯一の入り口としてindex.php
2. コントローラー
コントローラーフォルダーにdemocontroller.phpファイルを作成します ファイルの内容は次のとおりです

<?php 
class DemoController 
{ 
function index() 
{ 
echo(&#39;hello world&#39;); 
} 
} 
/* End of file democontroller.php */

この中でこのファイルには DemoController という名前のオブジェクトが作成されており、hello world を出力するインデックス メソッドが含まれています。次に、index.phpのDemoController内のindexメソッドを実行します。
index.php のコードは次のとおりです

<?php 
require(&#39;controller/democontroller.php&#39;); 
$controller=new DemoController(); 
$controller->index(); 
/* End of file index.php */

index.php を実行します。予想どおり、長い間失われていた hello が表示されました。 世界。これら 2 つのファイルは非常にシンプルですが、MVC の本質を少し明らかにし、唯一の入り口を通じて実行したいコントローラーを実行します。もちろんコントローラー部分はuriで決まるはずなので、どのコントローラーを実行するかをuriで判断できるようにindex.phpを書き換えましょう。
index.php はコードを次のように書き換えます。

<?php 
$c_str=$_GET[&#39;c&#39;]; 
//获取要运行的controller $c_name=$c_str.&#39;Controller&#39;; 
//按照约定url中获取的controller名字不包含Controller,此处补齐。 $c_path=&#39;controller/&#39;.$c_name.&#39;.php&#39;; 
//按照约定controller文件要建立在controller文件夹下,类名要与文件名相同,且文件名要全部小写。 $method=$_GET[&#39;a&#39;]; 
//获取要运行的action require($c_path); 
//加载controller文件 $controller=new $c_name; 
//实例化controller文件 $controller->$method(); 
//运行该实例下的action /* End of file index.php */

ブラウザに http://localhost/index.php?c=demo&a=index と入力して、Hello World を取得します。もちろん、別のコントローラーがあり、それを実行したい場合は、url パラメーターの c と a の値を変更するだけで済みます。
ここで説明すべき問題がいくつかあります。
1. PHP は動的言語です。文字列 new を直接使用して、必要なオブジェクトを取得し、必要なメソッド、つまり上記の new を実行できます。 $c_name、新しいものとして理解できます 「DemoController」、$c_name 自体の値が「DemoController」であるため、もちろん直接新しいものです このように「DemoController」を記述することはできません。「DemoController」文字列は変数を介して転送する必要があります。方法は同じです。
2. URL の c の値は、demo、つまり $c_name です。 値は、demoController である必要があります。PHP では大文字と小文字が区別されませんか? このようにしても実行できますか? 「php は大文字と小文字を区別します」という文は不完全です。php では、変数 ($ が前に付く) と定数 (define で定義される) のみが大文字と小文字を区別し、クラス名、メソッド名、さらには一部のキーワードは大文字と小文字を区別しません。書かれた。また、true、false、null などは、すべて大文字またはすべて小文字のみにすることができます。もちろん、実際のエンコード処理では大文字と小文字を区別する必要があります。
3. View
先ほどのコントローラーではhello worldを出力するだけでmvcの効果が得られませんでしたので、これをベースにview関数を追加していきます。ここでは基本的にビュー機能を追加する方法を誰もが考えることができます。はい、それは邪悪な require または include によって達成されます。
まず、view フォルダーの下にindex.php を作成し、何かを書き込みます (笑、まだ hello world と書きました)。次に、以前の DemoController を書き直します。コードは次のとおりです。

<?php 
class DemoController 
{ 
function index() 
{ 
require(&#39;view/index.php&#39;); 
} 
} 
/* End of file democontroller.php */

ブラウザで再度実行して、必要なコンテンツが出力されたかどうかを確認します。
次に、コントローラーを介してビューにデータを渡します。コードは次のとおりです:

<?php 
class DemoController 
{ 
function index() 
{ 
$data[&#39;title&#39;]=&#39;First Title&#39;; 
$data[&#39;list&#39;]=array(&#39;A&#39;,&#39;B&#39;,&#39;C&#39;,&#39;D&#39;); 
require(&#39;view/index.php&#39;); 
} 
} 
/* End of file democontroller.php */

ビュー フォルダー内のindex.php ファイルのコードは次のとおりです:

<html> 
<head> 
<title>demo</title> 
</head> 
<body> 
<h1><?php echo $data[&#39;title&#39;];?></h1> 
<?php 
foreach ($data[&#39;list&#39;] as $item) 
{ 
echo $item.&#39;<br>&#39;; 
} 
?> 
</body> 
</html>

関連の推奨事項:

Dugu Jiijian (8)_php は独自の PHP フレームワークをゼロから開発します

以上がphpのmvcの原理は何ですか? PHP の mvc 実装原理の紹介 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。