MVC フレームワーク PHP が独自の MVC フレームワークを作成する

WBOY
リリース: 2016-07-29 08:48:14
オリジナル
983 人が閲覧しました

1. ファイル構造
3 つのフォルダーを作成
コントローラー フォルダーにはコントローラー ファイルが保存されます
ビュー フォルダーにはビュー ファイルが保存されます
モデル フォルダーにはデータ ファイルが保存されます
唯一の入り口として、index.php を 1 つ作成します
2. コントローラー
ここに来ました デモコントローラーを作成しますコントローラーフォルダーの下にある .php ファイルの内容は次のとおりです

コードをコピーします コードは次のとおりです:


class DemoController
{
functionindex()
{
echo ('hello world ');
}
}
/* ファイルの終わり democontroller.php */


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

コードをコピーします コードは次のとおりです:


require('controller/democontroller.php');
$c DemoController(); ;
$controller->index();
/* ファイルの終わりindex.php */


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

コードをコピーします コードは次のとおりです:


$c_str=$_GET['c'];
//コントローラーを取得します。 to run
$c_name= $c_str.'Controller';
//規約により、URLから取得したコントローラ名にはControllerが含まれていないので、ここに記入します。
$c_path='controller/'.$c_name.'.php';
//規約に従って、コントローラーファイルはコントローラーフォルダーに作成され、クラス名はファイル名と同じでなければなりません。ファイル名はすべて小文字にする必要があります。
$method=$_GET['a'];
//実行するアクションを取得する
require($c_path);
//コントローラーファイルをロードする
$c $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 などは、すべて大文字またはすべて小文字のみにすることができます。もちろん、実際のエンコード処理では大文字と小文字を区別する必要があります。
3. View
前のコントローラーでは「hello world」を出力するだけでしたが、これでは mvc の効果は得られませんでした。次に、これをベースに view 関数を追加します。ビュー機能を追加します。はい、それは邪悪な require または include によって達成されます。
まず、ビューフォルダーの下にindex.phpを作成し、何かを書きます(笑、まだhello worldを書きました)。次に、以前の DemoController を書き直します。コードは次のとおりです:

コードをコピー コードは次のとおりです:


class DemoController
{
function Index()
{
require('view/index.php') ;
}
}
/* ファイルの終わり democontroller.php */


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

コードをコピーします。 コードは次のとおりです。

class DemoController
{
function Index( )
{
$data['title']='最初のタイトル'
$data['list']=array('A','B','C','D'); /index.php');
}
}
/* ファイルdemocontroller.php */


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



コードをコピーします

demo

foreach ($data['list'] as $item)
{
echo $item.'
'; >


上記では、PHP が独自の MVC フレームワークを作成できることを紹介しました。これは、PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート