Controller為控制器文件。程序從index.php開始執行
[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的核心庫文件,最後運行整個系統。以上程序運行起來時,會首先到Controller目錄下執行main類下的index方法。main類的程序如下:
[php]
<?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過來默認調用main方法的index函數,在本例中這個函數首先設定模板名參數(tpl)。再新建一個model。使用model的findall方法,查找全部數據庫信息。最後使用tpl模板顯示結果。上述控制器程序,必須繼承自spController類,方法名就是調用的action名。在程序中顯式調用時路徑為index.php?c=main&a=write。Model如下所示,是和數據庫表同名的類文件。這個model必須繼承自spModel,同時設置了主鍵和表名屬性。
[php]
<?php
class guestbook extends spModel
{
var $pk = "id"; //每個留言唯一的標志,可以稱為主鍵
var $table ="guestbook"; // 數據表的名稱
}
在tpl模板目錄裡的index.html文件下使用如下所示程序,格式化輸出結果。
[html]
<{foreach from=$results item=one}>
<h4><{$one.title}></h4>
<p><{$one.name}>:<br /><{$one.contents}></p>
<{/foreach}>