php语言 百分网手机站

从 PHP 4 移植到 PHP 5 网站程序哪些需要修改

时间:2020-11-13 17:17:53 php语言 我要投稿

从 PHP 4 移植到 PHP 5 网站程序哪些需要修改

  尽管大部分 PHP 4 的代码应该不用修改就能运行,还是应该留意以下不向下兼容的改变,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕业生考试网!
  ■有了一些新关键字。
  ■strrpos() 和 strripos() 如今使用整个字符串作为 needle。
  ■非法使用字符串偏移量会导致 E_ERROR 而不是 E_WARNING。一个非法使用的例子:$str = 'abc'; unset($str[0]);.
  ■array_merge() 被改成只接受数组。如果传递入非数组变量,对每个此类参数都会发出一条 E_WARNING 信息。要小心因为你的代码有可能疯狂发出 E_WARNING。
  ■PATH_TRANSLATED 服务器变量在 Apache2 SAPI 中不再暗中设定,这和 PHP 4 中的情形相反,如果 Apache 没产生此值则其被设为和 SCRIPT_FILENAME 服务器变量一样的值。此修改是为了遵守 ? CGI 规范。更多信息见 ? bug #23610,并参考手册中 $_SERVER['PATH_TRANSLATED'] 的说明。此问题也影响到 PHP >= 4.3.2 的版本。
  ■Tokenizer 扩展不再定义 T_ML_COMMENT 常量。如果把 error_reporting 设为 E_ALL,PHP 将产生一条消息。尽管 T_ML_COMMENT 从来都没用到过,还是在 PHP 4 中定义了。在 PHP 4 和 PHP 5 中 // 和 /* */ 都被解析为 T_COMMENT 常量。但是 PHPDoc 风格的注释 /** */,自 PHP 5 开始被 PHP 解析,被识别为 T_DOC_COMMENT。
  ■如果 variables_order 包括“S”,$_SERVER 应该带有 argc 和 argv 被产生。如果用户特别配制系统不创建 $_SERVER,那此变量当然就不存在了。改变的地方是不管 variables_order 怎么设定,在 CLI 版本中 argc 和 argv 总是可用的。本来 CLI 版不是总会产生全局变量 $argc 和 $argv 的。
  ■没有属性的对象不再被当成“empty”。
  ■有些情况下类必须在使用前被定义。这仅在使用了一些 PHP 5 的新特性(例如 interfaces)的时候发生。其它情况下行为都没变。
  ■get_class(),get_parent_class() 和 get_class_methods() 如今返回的类/方法名和定义时的名字一致(区分大小写),对于依赖以前行为(类/方法名总是返回小写的)的老脚本可能产生问题。一个可能的解决方法是在脚本中搜索所有这些函数并使用 strtolower()。 区分大小写的改变也适用于魔术常量 __CLASS__,__METHOD__ 和 __FUNCTION__。其值都会严格按照定义时的名字返回(区分大小写)。
  ■ip2long() 在传递入一个非法 IP 作为参数时返回 FALSE,不再是 -1。
  ■如果有函数定义在包含文件中,则这些函数可以在主文件中使用而与是否在 return() 指令之前还是之后无关。如果文件被包含两次,PHP 5 会发出致命错误,因为函数已经被定义,而 PHP 4 不管这个。因此推荐使用 include_once() 而不要去检查文件是否已被包含以及在包含文件中有条件返回。
  ■include_once() 和 require_once() 在 Windows 下先将路径规格化,因此包含 A.php 和 a.php 只会把文件包含一次。
  Example #1 strrpos() 和 strripos() 如今用整个字符串作为 needle
  <?php
  var_dump(strrpos('ABCDEF','DEF')); //int(3)
  var_dump(strrpos('ABCDEF','DAF')); //bool(false)
  ?>
  Example #2 没有属性的对象不再被当成“empty”
  <?php
  class test { }
  $t = new test();
  var_dump(empty($t)); // echo bool(false)
  if ($t) {
  // Will be executed
  }
  ?>
  Example #3 有些情况下类必须在使用之前定义
  <?php
  //works with no errors:
  $a = new a();
  class a {
  }
  //throws an error:
  $a = new b();
  interface c{
  }
  class b implements c {
  }
  ?>
  PHP 5 里的新函数。下面是列表:
  Arrays:
  ■array_combine() - 用一个数组作为键名,另一个数组作为值创建一个新数组
  ■array_diff_uassoc() - 计算数组的差别,并用用户提供的回调函数作附加的索引检查
  ■array_udiff() - 用回调函数比较数据来计算数组的差别
  ■array_udiff_assoc() - 计算数组的差别并作附加的索引检查。用回调函数来比较数据
  ■array_udiff_uassoc() - 计算数组的'差别并作附加的索引检查。数据的比较和索引检查都用回调函数来完成
  ■array_walk_recursive() - 对数组的每个成员递归使用用户函数
  ■array_uintersect_assoc() - 计算数组的交集并作附加的索引检查。用回调函数来比较数据
  ■array_uintersect_uassoc() - 计算数组的交集并作附加的索引检查。数据和索引都用回调函数来比较
  ■array_uintersect() - 计算数组的交集。用回调函数来比较数据
  InterBase:
  ■ibase_affected_rows() - 返回前一个查询影响到的行的数目
  ■ibase_backup() - 在服务管理器中发起一个后台任务并立即返回
  ■ibase_commit_ret() - 提交一个事务但不关闭
  ■ibase_db_info() - 请求有关数据库的统计信息
  ■ibase_drop_db() - 删除一个数据库
  ■ibase_errcode() - 返回一个错误代码
  ■ibase_free_event_handler() - 取消一个已注册的事件句柄
  ■ibase_gen_id() - 递增指定的发生器并返回其新值
  ■ibase_maintain_db() - 在数据库服务器上执行一条维护命令
  ■ibase_name_result() - 给结果集指定一个名字
  ■ibase_num_params() - 返回一个准备好的查询的参数数目
  ■ibase_param_info() - 返回一个准备好的查询的参数信息
  ■ibase_restore() - 在服务管理器中发起一个还原任务并立即返回
  ■ibase_rollback_ret() - 回卷一笔事务并保留事务上下文
  ■ibase_server_info() - 请求有关数据库服务器的统计信息
  ■ibase_service_attach() - 连接到服务管理器
  ■ibase_service_detach() - 从服务管理器断开
  ■ibase_set_event_handler() - 注册一个当事件发布时要调用的回调函数
  ■ibase_wait_event() - 等待数据库发布一条事件
  iconv:
  ■iconv_mime_decode() - 解码 MIME 头信息字段
  ■iconv_mime_decode_headers() - 一次解码多个 MIME 头信息字段
  ■iconv_mime_encode() - 压缩 MIME 头信息字段
  ■iconv_strlen() - 返回字符串中的字符计数
  ■iconv_strpos() - 在堆栈中找到第一个出现的子串位置
  ■iconv_strrpos() - 在堆栈中找到最后一个出现的子串位置
  ■iconv_substr() - 从字符串中取出一部分
  Streams:
  ■stream_copy_to_stream() - 把一个流的数据复制到另一个流
  ■stream_get_line() - 根据给定的分隔符中流中读取一行
  ■stream_socket_accept() - 接受一个由 stream_socket_server() 建立的 socket 连接
  ■stream_socket_client() - 打开一个 Internet 或 Unix 域的 socket 连接
  ■stream_socket_get_name() - 获取本地或远程的 sockets 名字
  ■stream_socket_recvfrom() - 从 socket 获取数据(不管连接是否已经建立)
  ■stream_socket_sendto() - 向 socket 发送一个消息(不管连接是否已经建立)
  ■stream_socket_server() - 建立一个 Internet 或 Unix 域服务器的 socket
  Date/Time:
  ■idate() - 将本地时间格式化为整数
  ■date_sunset() - 计算所指定日期和地点的日落时间
  ■date_sunrise() - T计算所指定日期和地点的日出时间
  ■time_nanosleep() - 廷迟执行程若干秒和若干纳秒
  Strings:
  ■str_split() - 把一个字符串分割为数组
  ■strpbrk() - 在一字符串中搜索给定的字符集合中的任意一个字符
  ■substr_compare() - 以二进制的形式比较两个字符串,从第一个字符串的 offset 开始,直到到达长度为 length 时结束,可自定义是否大小写敏感比较
  Other:

【从 PHP 4 移植到 PHP 5 网站程序哪些需要修改】相关文章:

1.php网站修改工具

2.PHP开发网站程序的优点

3.PHP语言需要避免哪些误区

4.PHP扩展程序讲解

5.php异步调试和线上调试网站程序

6.PHP 从 HTML 中分离

7.需要禁用的PHP危险函数有哪些

8.php编程语言入门需要掌握哪些知识

9.PHP4和PHP5性能对比