PHPを使用してmvcのシンプルなフレームワークを実装する方法を学びます

WBOY
リリース: 2016-07-25 09:05:31
オリジナル
1026 人が閲覧しました
  1. /**
  2. コントローラー:
  3. @link jbxue.com
  4. */
  5. class DemoController
  6. {
  7. function Index()
  8. {
  9. echo('hello world')
  10. }
  11. }
  12. /* ファイルデモコントローラーの終わり.php */
コードをコピー

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

    require('controller/democontroller.php');
  1. $controller=new DemoController();
  2. $controller->index();
  3. /* ファイルの終わり*/
コードをコピー
index.php を実行すると、出力された hello world が表示されます。 mvc の本質は、唯一の入り口から実行したいコントローラーを実行することです。 もちろんコントローラー部分はuriで決まるはずなので、どのコントローラーを実行するかをuriで判断できるようにindex.phpを書き換えましょう。 Index.php コードを変更します。

    $c_str=$_GET['c'];
  1. //実行するコントローラーを取得します
  2. $c_name=$c_str.'Controller';
  3. //次のように URL から取得します。同意しました コントローラ名にControllerが含まれていないため、ここに記入します。
  4. $c_path='controller/'.$c_name.'.php';
  5. //規約に従って、コントローラーファイルはコントローラーフォルダーに作成され、クラス名はファイル名と同じでなければなりません。ファイル名はすべて小文字にする必要があります。
  6. $method=$_GET['a'];
  7. //実行するアクションを取得する
  8. require($c_path);
  9. //コントローラーファイルをロードする
  10. $controller=new $c_name;
  11. $controller->$method();
  12. //このインスタンスでアクションを実行します
  13. /* ファイルの終わりindex.php */
  14. コードをコピーします
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)
    1. {
    2. echo $item.'
      '
    3. }
    4. ?> ;
    5. コードをコピー


    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!