-
- /**
- コントローラー:
- @link jbxue.com
- */
- class DemoController
- {
- function Index()
- {
- echo('hello world')
- }
- }
- /* ファイルデモコントローラーの終わり.php */
コードをコピー 上記のファイルは、DemoController という名前のオブジェクトを作成するだけで、hello world を出力するインデックス メソッドが含まれています。次に、index.phpのDemoController内のindexメソッドを実行します。
ファイル:index.php
require('controller/democontroller.php'); - $controller=new DemoController();
- $controller->index();
- /* ファイルの終わり*/
-
-
-
コードをコピー
index.php を実行すると、出力された hello world が表示されます。
mvc の本質は、唯一の入り口から実行したいコントローラーを実行することです。
もちろんコントローラー部分はuriで決まるはずなので、どのコントローラーを実行するかをuriで判断できるようにindex.phpを書き換えましょう。
Index.php コードを変更します。
$c_str=$_GET['c']; - //実行するコントローラーを取得します
- $c_name=$c_str.'Controller';
- //次のように URL から取得します。同意しました コントローラ名にControllerが含まれていないため、ここに記入します。
- $c_path='controller/'.$c_name.'.php';
- //規約に従って、コントローラーファイルはコントローラーフォルダーに作成され、クラス名はファイル名と同じでなければなりません。ファイル名はすべて小文字にする必要があります。
- $method=$_GET['a'];
- //実行するアクションを取得する
- require($c_path);
- //コントローラーファイルをロードする
- $controller=new $c_name;
- $controller->$method();
- //このインスタンスでアクションを実行します
- /* ファイルの終わりindex.php */
-
-
- コードをコピーします
php?c=demo&a=index、Hello World が表示されました。もちろん、別のコントローラーがあり、それを実行したい場合は、url パラメーターの c と a の値を変更するだけで済みます。
関連手順:
1. PHP は動的言語です。必要なオブジェクトを直接取得し、文字列 new、つまり上記の新しい $c_name を通じて必要なメソッドを実行できます。これは、値が new 'DemoController' であると理解できます。 $c_name 自体 これは 'DemoController' です。 もちろん、このように新しい 'DemoController' を記述することは機能しません。 'DemoController' 文字列は変数を介して転送する必要があります。方法は同じです。
2. URL の c の値は、demo です。つまり、$c_name の値は、demoController である必要があります。このように実行できますか? 「php では大文字と小文字が区別されます」という文は不完全です。php では、変数 ($ が前に付く) と定数 (define で定義される) のみが大文字と小文字を区別し、クラス名、メソッド名、さらには一部のキーワードは大文字と小文字を区別しません。書かれた。また、true、false、null などは、すべて大文字またはすべて小文字のみにすることができます。もちろん、実際のエンコード処理では大文字と小文字を区別する必要があります。
3. 見る
前のコントローラーでは「hello world」を出力するだけで、mvc の効果は得られませんでした。次に、これをベースに view 関数を追加します。これで、誰でも基本的に view 関数を追加する方法を考えることができると思います。 。はい、それは邪悪な require または include によって達成されます。
まず、viewフォルダーの下にindex.phpを作成し、何でも書きます(笑、まだhello worldと書きました)。
次に、前の DemoController を書き換えます。
class DemoController { functionindex() { require('view/index.php') } } /* ファイルの終わりdemocontroller.php */ コードをコピーし、ブラウザで実行して、必要なコンテンツが出力されたかどうかを確認します。
次に、コントローラーを介してビューにデータを渡して、次のことを確認します。
class DemoController { function Index() { $data['title']='最初のタイトル' $data['list']=array('A' ,'B','C','D'); require('view/index.php'); } } /* ファイルの終わり democontroller.php */コードをコピーしますフォルダー内のindex.phpファイル
デモ foreach ($data['list'] as $item) - {
- echo $item.'
' - }
- ?> ;
-
-
- コードをコピー
-
-
-
-
|