モデルを使用するコントローラーを呼び出すルータークラスを持つカスタムMVCPHPフレームワークがあり、コントローラーがビューなどを表示します。
私の問題は、変数がコントローラーとビューの間で意味的に渡されるようにする方法を技術的に理解できないことです。私は手っ取り早い修正を行うことができましたが、私が欲しいのはコントローラー用にこれです:
class IndexController extends Controller{
var $name = "John"; // instance variable
}
そして、ビューのためにこれを持っています:
<p> <?=$name?> </p>
私の質問はこれです:
- ビューがコントローラーからインスタンス変数にアクセスできるようにするController->render()関数などを作成するにはどうすればよいですか?と、
$data['view']['name'] = "John";
私が作成する新しいコントローラーに対して、デフォルトで10行のコードを記述したり、そのような厄介なことをしたりせずに、これを行うにはどうすればよいですか。これをやりたいので、できるだけ乾かします。
ありがとう。
編集:FabioCostaのソリューション
理解できるかどうかはわかりませんが、これまでのところ、ベースコントローラーは次のようになっています。
<?php
class Controller{
public function __get($key){
if(isset($this->$$key)) return $this->$$key;
}
}
?>
私のベースビュークラスは次のようになります。
<?php
class View{
public $controller;
public function render(){
$this->controller = $this;
}
?>
そして私はこのようにルーターから初期化します:
<?php
$controller = new IndexController();
$view = new IndexView();
$view->render();
?>
しかし、これは機能せず、私は何か間違ったことをしていることを知っています。