来源:[[http://trac.seagullproject.org/wiki/Howto/Upgrading/04]]
===== 将Seagull从0.3.x版本更新到0.4.x =====
在0.4版本中做了很多修改,所有如果你想转移现存模块到新的CVS版本,请注意下列这些变化。另外请阅读一下CHANGELOG.txt文件。
==== 重命名的基类 ====
类Base::变成类SGL::
例:
SGL::logMessage(null, PEAR_LOG_DEBUG);
==== 改变的基本方法 ====
Base::logMessage(__CLASS__ . '::' . __FUNCTION__ , null, null, PEAR_LOG_DEBUG);
现在变成
SGL::logMessage(null, PEAR_LOG_DEBUG);
==== 新的行为管理 ====
是,这出现了一些问题,也花费了一引起时间来找出原因。
感谢IRC上所有帮助我的人。
* 重命名aAllowedActions数组为aActionsMapping
* 用新的标准重写$this->_aActionsMapping数组
$this->_aActionsMapping = array(
'insert' => array('insert','redirectToDefault'),
'update' => array('update','redirectToDefault'),
'list' => array('list'),
'send' => array('send','redirectToDefault'),
);
重点:将validate($req, $input)函数改成validate($req, &$input)(你看到&符号了吗?)
==== 改变了validate()的参数 ====
在你的模块内validate()函数定义被改成:
function validate($req, &$input)
{
...
}
注意参数$input前的&符号
==== 调用DB的方法变了 ====
在0.3.xx版本中,DB连接是通过下列代码获取的:
$dbh = &Base::DB();
现在,在 0.4.xx 版本中是这样:
$dbh = &SGL_DB::singleton();
==== Changing into www/*.php pages ====
最后一行通常是:
$process->go(new SGL_HTTP_Request());
现在是:
$process->go();
==== 将generateSelect转移到模板====
所有对generateSelect的调用都转移到模板
在你的管理类中,将
$output->aLanguages = SGL_Output::generateSelect($array)
改变成
output->aLanguages = $array
将下列调用放到对应的模板中。
==== 一些方法移到 /lib/SGL/Manager.php 文件中 ====
你可以删除process()和display()方法如果你没有修改它们。它们现在在父类中。
==== 其它移动的方法… ====
23-01-05 创建了SGL_String类并将适当的方法移到类中
23-01-05 将所有generateSelect()调用移动到模板中
21-01-05 重命名会话DB methods more conventionally
21-01-05 移动URL相关方法到新类SGL_Url中
21-01-05 移动SGL::getPagedData()到SGL_DB::getPagedData()
将SGL_Output::msgSet()移动到SGL::raiseMsg()
SGL_Item 变化
Moved !ArticleViewMgr::getArticleDetail() to SGL_Item::getItemDetail()
Moved !ArticleViewMgr::getArticleListByCatID to SGL_Item::getArticleListByCatID
Moved !ArticleViewMgr::getDocumentListByCatID to SGL_Item::getDocumentListByCatID
Moved !ArticleViewMgr::retrievePaginated to !SGL_Item::retrievePaginated
==== 添加了$input->masterTemplate并删掉$input->rightCol ====
Be sure to add $input->masterTemplate = $this->masterTemplate; and remove $input->rightCol in your validate method