0

以下のクラスは正常に機能しており、MVC を学習しようとしていますが、その理由を知りたいだけです。おそらく非常に単純ですが、理解できませんでした。

  1. そのため、コントローラ クラスでは、View オブジェクト (別の場所で定義) を開始し、$this->view に割り当てました。コントローラークラスのどこにもviewプロパティを定義しておらず、拡張もしていないため、エラーが発生しないのはなぜですか。

  2. エラークラスと同じこと。$this->view->msg が正常に機能しているのは、msg プロパティが親でもエラー コントローラー自体でも定義されていないためです。

これらがその場でどのように機能しているか。

        <?php

    class Controller {

        function __construct() {
            echo 'main controller <br/>';
            $this->view = new View();
        }

    }

?>

コントローラを拡張するエラー クラス

    <?php

class Error extends Controller {

    function __construct() {
        parent::__construct();
        echo 'This is error mate';
        $this->view->msg = 'This page does not exit by msg';
        $this->view->render('error/index');
    }

}

?>
4

1 に答える 1

4

プロパティはいつでもオブジェクトに動的に追加できます。事前に宣言する必要はありません。必要に応じて、通常の変数と同じように。それで全部です。

欠点は、これらのプロパティが になることpublicです。これは望ましくない可能性があり、クラスの構造がわかりにくくなるため、悪い習慣になります。

于 2013-06-09T17:44:09.993 に答える