响应式广告位

帝国cms7.5在php7下需要改进的地方

1. 如何方便的在PHP7和其他版主中自由的切换帝国CMS
  //数据库设置
  $eCMS_config[‘db’][‘usedb’]=’mysql’; //数据库类型
  if(PHP_VERSION>6.9)$ecms_config[‘db’][‘usedb’]=’mysqli’;
  或者 两句合并成一句
  $ecms_config[‘db’][‘usedb’]=PHP_VERSION>6.9?’mysqli’:’mysql’;
  php7 有很多地方再也不兼容低版本。对于帝国cms7.5来说,受影响最深的就是编码转换了。
  在php7的地盘,PHP4的语法风格中的一些东西将被被抛弃。例如构造函数的用法,会在新的PHP7中完全被抛弃。PHP7将会提示一个:E_DEPRECATED的错误提示。
  classfoo{
  //方法名类名相同的构造函数的用法再也不兼容
  functionfoo(){
  echo’Iamtheconstructor’;
  }
  }
  ?>
  翻遍帝国cms7.的源代码,帝国cms的编码转换文件e/class/doiconv.php,有多处不适应php7
  可能受影响的模块:
  支付—
  搜索 —
  首字母生成—-
  增加栏目生成拼音乱码 —
  本着少改的原则,提出如下修改措施—
  针对 e/class/doiconv.php 文件
  2.1 查找 function Chinese($dir=’./’)
  修改为
  function __construct($dir=’./’)
  2.2 查找
  $this->config[‘codetable_dir’] = $dir.”../data/codetable/”;
  修改为
  $this->config[‘codetable_dir’] = ECMS_PATH.”e/data/codetable/”;
  2.3 查找
  /* 如果编码相同,直接返回 */
  if ($source_lang == $target_lang || $source_string == ”)
  {
  return $source_string;
  }
  在其后添加:
  //edit by jiuhecai
  return mb_convert_encoding($source_string,$target_lang,$source_lang);
  2.4 查找
  while(list($key,$value)=each($tmp))
  替换为:
  foreach($tmp as $key=>$value)
  邮件发送模块,也有类似的问题
  邮件发送模块 e/class/class.smtp.php
  问题体现:http://bbs.phome.net/ShowThread/?threadid=357544&forumid=42
  解决方案:
  修改e/class/class.smtp.php
  3.1 查找function SMTP() {
  修改为
  function __construct() {
  3.2查找 while(list(,$line) = @each($lines)) {
  修改为:
  foreach($lines as $line){
  3.3查找 while(list(,$line_out) = @each($lines_out)) {
  修改为
  foreach($lines_out as $line_out){
  3.4 查找 while(list(,$l) = @each($entries)) {
  修改为
  foreach ($entries as $l){

© 版权声明
THE END
喜欢就支持一下吧
点赞703赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容