SpeedPHP フレームワークの学習-1. 基本と MVC の理解
SpeedPHP は、迅速な学習に基づいた PHP フレームワークであり、そのアーキテクチャは比較的単純で、学習曲線は比較的簡潔です。ここでは、CMS システムを例として、SP の使用プロセスを記録します。
SP 圧縮パッケージをダウンロードし、解凍してサーバーのルート ディレクトリに配置し、サーバーにアクセスします。 SP ディレクトリ内のファイルには、controller、model、SpeedPHP、および tmp ディレクトリが含まれます。SpeedPHP はシステム ファイル、Controller はコントローラ ファイルです。プログラムは、index.php
から実行を開始します。<?php define("SP_PATH",dirname(__FILE__)."/SpeedPHP"); define("APP_PATH",dirname(__FILE__)); $spConfig = array( "db" =>array( 'host' =>'localhost', 'login' =>'root', 'password' =>'root', 'database' =>'test', ), 'view' => array( 'enabled' =>TRUE, 'config'=>array( 'template_dir'=> APP_PATH.'/tpl', 'compile_dir'=> APP_PATH.'/tmp', 'cache_dir'=> APP_PATH.'/tmp', 'left_delimiter'=> '<{', 'right_delimiter'=> '}>', ), ) ); require(SP_PATH."/SpeedPHP.php"); spRun();
上記のプログラムは、App と SP のパスを定義し、データベースとビュー層の構成を読み込み、SP のコア ライブラリ ファイルを読み込み、最後にシステム全体を実行します。上記のプログラムを実行すると、まずコントローラー ディレクトリに移動し、メイン クラスの下でインデックス メソッドを実行します。メインクラスのプログラムは以下の通りです:
<?php class main extends spController { function index(){ $tpl = $this->spArgs("tpl","green"); $guestbook =spClass("guestbook"); $this->results= $guestbook->findAll(); $this->display("{$tpl}/index.html"); } function write(){ $guestbook =spClass("guestbook"); $newrow =array( 'name'=> $this->spArgs('name'), 'title'=> $this->spArgs('title'), 'contents'=> $this->spArgs('contents'), ); $guestbook->create($newrow); echo "<ahref=/index.php?c=main&a=index>return</a>"; } }
メインメソッドのインデックス関数はデフォルトでindex.phpから呼び出されます。この例では、この関数は最初にテンプレート名パラメータ(tpl)を設定します。新しいモデルを作成します。モデルの findall メソッドを使用して、すべてのデータベース情報を検索します。最後に、tpl テンプレートを使用して結果を表示します。上記のコントローラー プログラムは spController クラスから継承する必要があり、メソッド名は呼び出されるアクションの名前です。プログラム内で明示的に呼び出される場合、パスはindex.php?c=main&a=writeになります。以下にモデルを示します。これはデータベース テーブルと同じ名前のクラス ファイルです。このモデルは spModel から継承し、主キーとテーブル名の属性を設定する必要があります。
<?php class guestbook extends spModel { var $pk = "id"; //每个留言唯一的标志,可以称为主键 var $table ="guestbook"; // 数据表的名称 }
tpl テンプレート ディレクトリのindex.html ファイルの下にある次のプログラムを使用して、出力結果をフォーマットします。
<{foreach from=$results item=one}> <h4><{$one.title}></h4> <p><{$one.name}>:<br /><{$one.contents}></p> <{/foreach}>