php教程 php手册 PHP 5.0 的变化与PHP 6.0 展望

PHP 5.0 的变化与PHP 6.0 展望

Jun 21, 2016 am 08:59 AM
ext mysql php var

  目前,大多数PHP安装还是使用PHP 4.x版本。实际上,PHP 5.0已经出台一段时间了,而如今PHP 5.1.1也刚刚发行。如果你还没有升级到这些新版本,那么让我们一同看一下在新版的PHP中的变化,并在最后讨论对于PHP 6所期望的特性。

  一、PHP 5.0中的变化

  作为一个全新的版本号,在PHP 4和PHP 5之间存在许多实质性的区别。大多数的炒作主要围绕被重新改写过的新的对象模型。PHP 5版本更为完整并且运行性能更为良好。在PHP 4中,对象其实仅是一个粗糙的数据类型,并且是值引用的。在试图保持尽可能多的向后兼容性的同时,在PHP 5中,设置zend.ze1_compatibility_mode可以允许与版本4中方法的兼容。当然,PHP 5也存在一些向后不兼容的改变,具体包括:

  ·新的保留下来的关键字大多数与对象模型相关(exception,final, php_user_filter,interface,implements,extends,public,private,protected,abstract,clone,try,catch,throw)。在PHP 4中保留的两个单词不再存在(cfunction,old_function)。

  ·如果一个对象没有任何属性,那么它不再为空(empty)。

  ·现在array_merge()函数只接收数组。

  ·类可以在使用前声明(依赖于具体情况)。

  ·get_class(),get_parent_class()和get_class_methods()现在能够返回一个大小写敏感的结果,而以前的返回结果都是小写的。

  ·strrpos()和strripos()现在使用整个字符串。例如,var_dump(strrpos('ABCDEF','DAF'))将在PHP 4中返回int(3),而在PHP 5中返回bool(false)

  ·如果$_SERVER存在,它将用argc和argv进行填充-这就允许CLI版本总是可以存取这些数据。

  ·当传递一个无效的IP地址时,ip2long()返回FALSE而不是-1。

  ·定义在一个包括文件中的函数现在能够在任何时刻为主文件所调用。如果文件两次被包括(这时函数已经被定义了),PHP 5也将发出一个致命的错误。

  ·require_once()和include_once函数现在考虑到了Windows大小的不敏感性,并且将每次仅包括一个文件-即使该函数以不同大小写的文件名被调用多次。

  ·摆脱了原来PHP 4中的警告。新的PHP 5在遇到一个无效的字符串偏移量时将抛出一个错误。
  
  ·Tokenizer扩展不再定义闲置的T_ML_COMMENT常量。

  注意,这些看似较多的不兼容的变化其实并不大,而且如果你想把原有代码移植到PHP 5中的话,有可能只对你的脚本作极少量的修改即可。PHP 5为做许多事情提供了更好的方法,但是如果你的目的仅是为了能使程序运行,那么你不会遇到太多的麻烦。在PHP 5中的另外一些变化有:

  ·在命令行CLI和CGI脚本作了少许变化,有效地提高了新的CLI地位的重要性。

  ·引入大量的新函数,其中许多是用于处理数组、字符转换和流操作的。

  ·缺省情况下,MySQL客户端库没有与PHP 5绑定到一起。而是,包括了SQLite扩展-它基本上是一微型数据库引擎,其目的是消除任何设置和管理的需要。

  ·新加了mysqli(MySQL增强扩展)(缺省地没有包括在内),为的是充分地利用MySQL 4.1及以上版本的优势。

  想更全面地了解从PHP 4到PHP 5的变化,你可以参考PHP网站上的官方档案。

  二、PHP 5.1.x中的变化

  在本文成文时,刚刚发行PHP 5.1.1(在广为争论的5.1.0出台后不久)。该版本在PHP邮件列表中引起一阵小的骚乱。在5.1.0版本中,某些关键的变化被匆忙地包括进一个随后发行的候选版本中。一切似乎都静悄悄的,直到最后的发行版才引起酣然大波。然而,这些变化在5.1.1中被还原以防止出现pear::date冲突。

  ·如今,闪电般登场的PDO成为PHP核心的一部分。要更多地了解与PHP相关的抽象层知识,可以参考《Database Abstraction in PHP》或者PHP网站上的官方档案。

  ·PDO MySQL驱动程序现在成为存取MySQL的推荐方法-在缺省情况下,并不启用老式的mysqli和mysql扩展。

  ·PHP 5.1比5.0版本在性能上也大大改进。

  ·如前所提及的,日期/时间支持在5.1.0版本中被重写,而在5.1.1版中又被还原。也许以后不久还会有所变化-尽管都是经过仔细计划的。

  ·在PHP 5.0到PHP 5.0.4版本阶段,是支持抽象的私有方法的。然而,现在它们都被取消了。

  ·现在,不允许重复声明一个类常量。下面代码在5.1中不会工作并将抛出一个E_ERROR错误。

<?php
 class anything {
  const const_name = 'value';
  const const_name = 'value2';
 }
?>


  ·14个更旧的扩展被从PHP核心删除。这些包括 ext/cpdf,ext/dbx,ext/dio,ext/fam,ext/ingres_ii,ext/ircg,ext/mcve,ext/mnogosearch,ext/oracle,ext/ovrimos,ext/pfpro,ext/w32api,ext/yp,sapi/activescript。所有这些还可用于PECL中,尽管并不是所有这些扩展都能得到积极维护。

  ·在参考引用的管理上也有所变化。以前我们可以以参考引用方式发送、赋值或返回变量-其实它们应该以值的形式返回。这些包括常数、自身以值形式返回的函数或一个表达式的结果。这里有一个例子:

<?php
$var1 = "value";
function return_val() {
 global $var_name;
 return $var_name;
}
$var2 = &return_val();
?>


  这段代码过去是可以工作的(直到5.0.4版本),但是现在在5.1版本中会抛出一个E_STRICT异常。

  也许5.1.x不久也会退场,但是其中引入了许多有价值的改进-PDO的引入可能是最值得称道的。要详细了解PHP文档中的更改日志,可以看一下这里有关PHP 5.1(和早些版本)变化的详尽列表。

  三、PHP 6.0中要作的改变

  PHP 6.0估计会是一个相当激动人心的发行。然而,什么东西都是一分为二的。不过,看起来最令我气恼的三个家伙(register_globals,magic_quotes_gpc和safe_mode)可能要退位了。第一个存在一个很大的安全漏洞;第二个由于操作大量数据所以在改变环境时简直就是一场梦魇;而第三个是一个无人能理解的错误的名称并且会给人带来一种安全方面的错觉。在Unicode问题上,还有大量的工作要做。下面是预计的一些新变化:

  ·register_globals,safe_mode和各种魔术引用选项将被删除。
 
  ·ereg扩展将被删除,而XMLReader,XMLWriter和Fileinfo扩展将被添加到内核上并且在缺省情况下为on状态。
 
  ·我发现的另外一处令人激动的新变化是,APC(Alternative PHP Cache)将被添加到内核上,尽管在缺省情况下为off状态。APC可以为开发者提供严谨的性能益处。

  ·所有的E_STRICT消息将被合并进E_ALL-这又是针对良好编程实践所作出的一个积极更改。

  ·不再支持ASP风格的标签<%。

  ·引入了新的64位整型数。当前的整数类型被保留下来-至于是32还是64位将依赖平台而定。

  ·可以结合多维数组使用foreach,例如foreach($array as $k => list($a, $b))。

  ·在php.ini新引入的一个开关将允许你禁止Unicode语义(缺省地,它们被置为on状态)。

  ·还有各种针对Unicode的字符串操作上的改进。
 
  ·microtime()函数将返回完整的浮点数,而不是象目前的微秒值unix_timestamp。这样更可能有利于大多数人的使用。

  ·不再支持用于字符串索引的{}注释,而[]版本将被添加到substr()和array_slice()功能中。以前的[]为许多人所批评,但是大多数的开发者,包括我在内,都一直使用[]。

  ·在针对CGI SAPI情形时,将一直启用FastCGI,并且不会被禁止。

  ·不再支持古老的HTTP_*_VARS全局变量。

  ·var将有一个新的别名public。在PHP4 类中Var是被允许的,但是在PHP 5中,这将会引发一个警告。在PHP 6中,var将仅是public的一个别名,因此将不会再出现警告。

  ·ze1兼容性模式将被删除-这一方式原来试图保留PHP 4的行为但是却存在一些错误。

  ·不再允许用静态语法来调用动态函数。

  另外,还存在许多要决定的问题,例如命名空间可能更为重要,但是目前基本上还没有得到同意。你可以读一下最近的PHP开发者会议上对于PHP 6的详细讨论。尽管PHP 6尚未出台,但是我相信在其最终发行之前一定存在不少周折。尽管如此,PHP所做出的贡献已得到业界的充分认可,其前途是一片光明的。



본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL 사용자와 데이터베이스의 관계 MySQL 사용자와 데이터베이스의 관계 Apr 08, 2025 pm 07:15 PM

MySQL 데이터베이스에서 사용자와 데이터베이스 간의 관계는 권한과 테이블로 정의됩니다. 사용자는 데이터베이스에 액세스 할 수있는 사용자 이름과 비밀번호가 있습니다. 권한은 보조금 명령을 통해 부여되며 테이블은 Create Table 명령에 의해 생성됩니다. 사용자와 데이터베이스 간의 관계를 설정하려면 데이터베이스를 작성하고 사용자를 생성 한 다음 권한을 부여해야합니다.

Redshift Zero ETL과의 RDS MySQL 통합 Redshift Zero ETL과의 RDS MySQL 통합 Apr 08, 2025 pm 07:06 PM

데이터 통합 ​​단순화 : AmazonRdsMysQL 및 Redshift의 Zero ETL 통합 효율적인 데이터 통합은 데이터 중심 구성의 핵심입니다. 전통적인 ETL (추출, 변환,로드) 프로세스는 특히 데이터베이스 (예 : AmazonRDSMySQL)를 데이터웨어 하우스 (예 : Redshift)와 통합 할 때 복잡하고 시간이 많이 걸립니다. 그러나 AWS는 이러한 상황을 완전히 변경 한 Zero ETL 통합 솔루션을 제공하여 RDSMYSQL에서 Redshift로 데이터 마이그레이션을위한 단순화 된 거의 실시간 솔루션을 제공합니다. 이 기사는 RDSMYSQL ZERL ETL 통합으로 Redshift와 함께 작동하여 데이터 엔지니어 및 개발자에게 제공하는 장점과 장점을 설명합니다.

MySQL : 초보자를위한 데이터 관리의 용이성 MySQL : 초보자를위한 데이터 관리의 용이성 Apr 09, 2025 am 12:07 AM

MySQL은 설치가 간단하고 강력하며 데이터를 쉽게 관리하기 쉽기 때문에 초보자에게 적합합니다. 1. 다양한 운영 체제에 적합한 간단한 설치 및 구성. 2. 데이터베이스 및 테이블 작성, 삽입, 쿼리, 업데이트 및 삭제와 같은 기본 작업을 지원합니다. 3. 조인 작업 및 하위 쿼리와 같은 고급 기능을 제공합니다. 4. 인덱싱, 쿼리 최적화 및 테이블 파티셔닝을 통해 성능을 향상시킬 수 있습니다. 5. 데이터 보안 및 일관성을 보장하기위한 지원 백업, 복구 및 보안 조치.

MySQL 사용자 이름 및 비밀번호를 작성하는 방법 MySQL 사용자 이름 및 비밀번호를 작성하는 방법 Apr 08, 2025 pm 07:09 PM

MySQL 사용자 이름 및 비밀번호를 작성하려면 : 1. 사용자 이름과 비밀번호를 결정합니다. 2. 데이터베이스에 연결; 3. 사용자 이름과 비밀번호를 사용하여 쿼리 및 명령을 실행하십시오.

MySQL의 쿼리 최적화는 데이터베이스 성능을 향상시키는 데 필수적입니다. 특히 대규모 데이터 세트를 처리 할 때 MySQL의 쿼리 최적화는 데이터베이스 성능을 향상시키는 데 필수적입니다. 특히 대규모 데이터 세트를 처리 할 때 Apr 08, 2025 pm 07:12 PM

1. 올바른 색인을 사용하여 스캔 한 데이터의 양을 줄임으로써 데이터 검색 속도를 높이십시오. 테이블 열을 여러 번 찾으면 해당 열에 대한 인덱스를 만듭니다. 귀하 또는 귀하의 앱이 기준에 따라 여러 열에서 데이터가 필요한 경우 복합 인덱스 2를 만듭니다. 2. 선택을 피하십시오 * 필요한 열만 선택하면 모든 원치 않는 열을 선택하면 더 많은 서버 메모리를 선택하면 서버가 높은 부하 또는 주파수 시간으로 서버가 속도가 느려지며, 예를 들어 Creation_at 및 Updated_at 및 Timestamps와 같은 열이 포함되어 있지 않기 때문에 쿼리가 필요하지 않기 때문에 테이블은 선택을 피할 수 없습니다.

Navicat에서 데이터베이스 비밀번호를 검색 할 수 있습니까? Navicat에서 데이터베이스 비밀번호를 검색 할 수 있습니까? Apr 08, 2025 pm 09:51 PM

Navicat 자체는 데이터베이스 비밀번호를 저장하지 않으며 암호화 된 암호 만 검색 할 수 있습니다. 솔루션 : 1. 비밀번호 관리자를 확인하십시오. 2. Navicat의 "비밀번호 기억"기능을 확인하십시오. 3. 데이터베이스 비밀번호를 재설정합니다. 4. 데이터베이스 관리자에게 문의하십시오.

MySQL을 보는 방법 MySQL을 보는 방법 Apr 08, 2025 pm 07:21 PM

다음 명령으로 MySQL 데이터베이스를보십시오. 서버에 연결하십시오. mysql -u username -p password run show database; 기존의 모든 데이터베이스를 가져 오려는 명령 데이터베이스 선택 : 데이터베이스 이름 사용; 보기 테이블 : 테이블 표시; 테이블 구조보기 : 테이블 이름을 설명합니다. 데이터보기 : 테이블 이름에서 *를 선택하십시오.

MySQL을 복사하여 붙여 넣는 방법 MySQL을 복사하여 붙여 넣는 방법 Apr 08, 2025 pm 07:18 PM

MySQL에서 복사 및 붙여 넣기 단계는 다음 단계가 포함됩니다. 데이터를 선택하고 CTRL C (Windows) 또는 CMD C (MAC)로 복사; 대상 위치를 마우스 오른쪽 버튼으로 클릭하고 페이스트를 선택하거나 Ctrl V (Windows) 또는 CMD V (Mac)를 사용하십시오. 복사 된 데이터는 대상 위치에 삽입되거나 기존 데이터를 교체합니다 (데이터가 이미 대상 위치에 존재하는지 여부에 따라).

See all articles