ホームページ >バックエンド開発 >PHPチュートリアル >PHP の MVC フレームワークの詳細な分析_PHP チュートリアル

PHP の MVC フレームワークの詳細な分析_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:45:151085ブラウズ

PHP の MVC フレームワークの詳細な分析

この記事では、まず PHP の MVC 実装原則を紹介します。私たちのフレームワークの MVC 部分もこの原則に基づいて実装されていますが、今日のコードはフレームワーク内のコードではありません。原理を説明するだけです

1. ファイル構造

3つのフォルダーを作成します

コントローラーフォルダーにはコントローラーファイルが保存されます

ビューフォルダーにはビューファイルが保存されます

モデルフォルダーにはデータファイルが保存されます

唯一の入り口としてindex.phpを作成します

2.コントローラー

controllerフォルダーにdemocontroller.phpファイルを作成します。ファイルの内容は以下の通りです

クラスDemoController

{

関数index()

{

echo('hello world');

}

}

/* ファイルの終わりdemocontroller.php */

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

index.phpのコードは以下の通りです

require('controller/democontroller.php');

$controller=new DemoController();

$controller->index();

/* ファイルの終わりindex.php */

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

index.phpの書き換えたコードは以下の通りです

$c_str=$_GET['c'];

//コントローラーを実行させます

$c_name=$c_str.'コントローラー';

//規約上、URLから取得したコントローラ名にはControllerが含まれていないので、ここに記入します。

$c_path='controller/'.$c_name.'.php';

//規約によれば、コントローラーファイルはコントローラーフォルダーに作成し、クラス名はファイル名と同じにし、ファイル名はすべて小文字にする必要があります。

$method=$_GET['a'];

//アクションを実行します

require($c_path);

//コントローラーファイルをロードする

$controller=new $c_name;

//コントローラーファイルをインスタンス化する

$controller->$method();

//このインスタンスでアクションを実行します

/* ファイルの終わりindex.php */

ブラウザに http://localhost/index.php?c=demo&a=index と入力し、Hello World を取得します。もちろん、別のコントローラーがあり、それを実行したい場合は、url パラメーターの c と a の値を変更するだけで済みます。

ここで説明すべき質問がいくつかあります。

1. PHP は動的言語です。必要なオブジェクトを直接取得し、文字列 new、つまり上記の新しい $c_name を通じて必要なメソッドを実行できます。$c_name は new 'DemoController' として理解できます。もちろん、新しい「DemoController」を直接記述することはできません。「DemoController」文字列は変数を介して転送する必要があります。方法は同じです。

2番目に、URLのcの値はdemoです。これは、$c_nameの値がdemoControllerである必要があることを意味します。PHPは大文字と小文字を区別しますという文もPHPでは不完全です。大文字と小文字が区別されるのは、変数 (前に $ が付く) と定数 (define で定義される) だけですが、クラス名、メソッド名、さらには一部のキーワードは大文字と小文字が区別されません。また、true、false、null などは、すべて大文字またはすべて小文字のみにすることができます。もちろん、実際のエンコード処理では大文字と小文字を区別する必要があります。

三、見る

前のコントローラーでは「hello world」を出力しただけで、mvc の効果は得られませんでした。次に、これをベースに view 関数を追加します。これで、ビューの追加方法は大体誰でも思いつくようになったと思います。関数。はい、それは邪悪な require または include によって達成されます。

まず、view フォルダーの下にindex.php を作成し、何でも書きます (笑、まだ hello world と書きました)。次に、以前の DemoController を書き直します。コードは次のとおりです:

クラスDemoController

{

関数index()

{

require('view/index.php');

}

}

/* ファイルの終わりdemocontroller.php */

ブラウザで再度実行して、必要な内容が出力されているかどうかを確認します。

次に、コントローラーを通じていくつかのデータをビューに渡します。コードは次のとおりです。

クラスDemoController

{

関数index()

{

$data['title']='最初のタイトル';

$data['list']=array('A','B','C','D');

require('view/index.php');

}

}

/* ファイルの終わりdemocontroller.php */

viewフォルダー配下のindex.phpファイルのコードは以下の通りです:

<頭>

デモ

foreach ($data['list'] as $item)

{

$item をエコーし​​ます。'
';

}

?>

最後に、MVCはModel View Controllerモデルビューコントローラーです

www.bkjia.com本当http://www.bkjia.com/PHPjc/1042526.html技術記事 PHP の MVC フレームワークの詳細な分析 この記事では、まず PHP の MVC の実装原理を紹介します。私たちのフレームワークの MVC 部分もこの原理に基づいて実装されていますが、今日のコードはフレームワーク内のコードではありません...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。