以下は非常に単純な MVC 構造の実装です。データ ソースでも組み込みの固定配列が使用されていますが、実際には、多くの PHP フレームワークのコア実装の考え方はこれに似ています。一つ
一部のフレームワークでは、開発者にとって便利なツールが提供されています。私自身も PHP フレームワークを実装したいと考えており、フレームワークの開発からさらに学ぶことができればと考えています。 PHP の設計アイデアと手法。
Controller.php
「Model.php」をインクルードします;
'View.php' を含める;
クラス コントローラー {
プライベート $model = '';
プライベート $view = '';
パブリック関数Controller(){
$ this->モデル
$this->view = new View();
}
パブリック関数 doAction( $method = 'defaultMethod', $params = array() ){
if( empty($method) ){
$this->defaultMethod();
}else if(method_exists($this, $method) ){
call_user_func(array($this, $method), $params);
}その他{
$this->nonexisting_method();
}
}
パブリック関数 link_page($name = ''){
$links = $this->model->getLinks();
$this->view->display($links);
$result = $this->model->getResult($name);
$this->view->display($result);
}
パブリック関数defaultMethod(){
$this->br();
echo "これがデフォルトの方法です。 ";
}
パブリック関数 noneexisting_method(){
$this->br();
echo "これは存在しないメソッドです。 ";
}
パブリック関数 br(){
echo "
";
}
}
$controller = 新しいコントローラー();
$controller->doAction('link_page', 'b');
$controller->doAction();
Model.php
コード
クラスモデル {
プライベート $database = array(
"a" => "こんにちは",
"b" => "はい、よくやった",
"c" => "さようなら"、
);
//@TODO データベースに接続します
// クエリを実行して結果を取得します
パブリック関数 getResult($name){
if( empty($name) ){
FALSE を返す;
}
If( in_array($name, array_keys( $this->database ) ) ){
return $this->database[$name];
}
}
パブリック関数 getLinks(){
$links = "リンク A ";
$links.= "リンク B ";
$links.= "リンク C ";
$links を返す;
}
}
View.php
クラスビュー {
パブリック関数表示($output){
// ob_start();
echo $output;
}
}