声明:本文为原创文章,如须转载请注明
如有问题请到bbs.tsinghua.edu.cn WebDev版
日前由于需要在php5上运行plog,但网上下载的plog_0.3.2_cn包不能直接使用(未汉化的没有看,应该也不行)
又找不到资料,只能自己研究,侥幸成功,不敢把经验独享,写个总结供其他有同样需要的人做参考。
以下步骤在windows2000 Advanced Server系统实现
使用plog_0.3.2_cn + php5.0.2 + mysql4.1.7(mysqli函数库)
修改plog_0.3.2_cn源程序如下
1.修改/class/object/exception.class.php:
说明:
去掉里面的Exception类,去掉throw、catch函数。修改_internalErrorHandler函数(名字无所谓,可以改成你喜欢的)
这里要说的是,php5提供了系统的Exception类,所以不用再自己定义,而且也不能自己定义,否则会出现重复定义的错误
这里提供的错误处理类,仅仅是打印出错误信息,高级功能请自行编写。
<?
//自定义错误处理函数
/*
*参数:$e Exception类型
*/
function _internalErrorHandler( $e)
{
echo ('Error in file ' . $e->getFile( ) . ' on line ' .
$e->getLine( ) . ".<br>" . 'Error message: "' . $e->getMessage( ) .
'" and error code: ' . $e->getCode( ) . '.');
}
//注册我们自定义的错误处理函数
$old_error_handler = set_error_handler( "_internalErrorHandler" );
?>
2.修改/class/object/reflection.class.php
reflection类改名为_reflection
说明:
同上,php5提供了Reflection类,这里我们把类名稍做变动
Reflection的具体作用请参考php5手册
由于其他代码里用到了自定义的这个类,我没有把它去掉
3./class/controller/controller.class.php
原new reflection()改为new _reflection()
说明:
此改动对应2
4./class/database/adodb/adodb-iterator.inc.php
ADODB_Iterator类增加函数
function valid()
{
return !$this->rs->EOF;
}
说明:
实际上应该是把hasMore函数改名为valid,怕有其他代码对hasMore的调用,
就多加了一个,两个函数功能是一样的,这样调用哪一个都可以。
做了上述改动之后就可以把plog_0.3.2装在php5上了,下面的改动是为了让plog使用mysqli的函数库来代替原来的mysql函数库
5./class/database/db.class.php(line 24)
/class/dao/model.class.php(line 45)
/wizard.php(line 397 in function connectDb)
/register.php(line 52 in function connectDb)
/class/plugin/pluginbase.class.php(line 171 in function connectDb)
/class/config/configdbstorage.class.php(line 59 in function ConfigDbStorage)
就是把代码中所有 $db = NewADOConnection('mysql');的,都改成 $db = NewADOConnection('mysqli');
这个也可以改成其他你想用的数据库类型,plog支持的数据库种类还是蛮多的。
做完之后发现也没做多少改动,却花了不少时间-_-,想想主要是对php5不熟悉,准确的说是php5比php4多了哪些功能,
改动过程中,主要参考了O'Reilly出版的《Upgrading.to.PHP.5》,应该说学到了不少东西*^_^*
由于改动不多,就不提供改好的包了,有需要的按照上面的办法改以下还快就能搞定的。
希望能给正在找相关资料的人提供帮助。
2004-11-18
snowphy
附:
Upgrading to PHP 5
By Adam Trachtenberg
Publisher : O'Reilly
Pub Date : July 2004
ISBN : 0-596-00636-5
Pages : 304