一. PHP 5.2、5.3、5.4、5.5、5.6 版本区别对比以及新功能详解

PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束
PHP5.2:JSON 支持
PHP5.3:弃用的功能,匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运算符,Phar
PHP5.4:Short Open Tag, 数组简写形式,Traits, 内置 Web 服务器,细节修改
PHP5.5:yield, list() 用于 foreach, 细节修改
PHP5.6: 常量增强,可变函数参数,命名空间增强

1.php5.2以前

1.1 autoload的使用;当在代码中使用一个未定义的类的时候,该函数就会被调用

现在已经不再使用了,因为一个项目中只能有一个__autoload();现在使用spl_autoload_register();

1.2 PDO和MiSQLi的使用

1.3 类型约束。

通过类型约束可以限制参数的类型,不过这个机制不完善。

2. php5.2 

(2006-2011)

2.1 JSON的支持

  增加了json_encode(),json_decode()等函数

3.php5.3

(2009-2012)

PHP5.3 算是一个非常大的更新,新增了大量新特征,同时也做了一些不向下兼容的修改

3.1 弃用的功能

3.2 匿名函数

$func=function($arg){
echo $arg;
} $func('hello');

3.2 新增了魔术方法 __invoke(),__callStatic();

随着匿名函数的加入,PHP 引入了一个新的魔术方法 __invoke().
该魔术方法会在将一个对象作为函数调用时被调用: class A
{
public function __invoke($str)
{
print "A::__invoke(): {$str}";
}
} $a = new A;
$a("Hello World");
输出毫无疑问是: A::__invoke(): Hello World
__callStatic() 则会在调用一个不存在的静态方法时被调用。

3.3 命名空间

<?php
// 命名空间的分隔符是反斜杠,该声明语句必须在文件第一行。
// 命名空间中可以包含任意代码,但只有 **类, 函数, 常量** 受命名空间影响。
namespace XXOO\Test; // 该类的完整限定名是 \XXOO\Test\A , 其中第一个反斜杠表示全局命名空间。
class A{} // 你还可以在已经文件中定义第二个命名空间,接下来的代码将都位于 \Other\Test2 .
namespace Other\Test2; // 实例化来自其他命名空间的对象:
$a = new \XXOO\Test\A;
class B{} // 你还可以用花括号定义第三个命名空间
namespace Other {
// 实例化来自子命名空间的对象:
$b = new Test2\B; // 导入来自其他命名空间的名称,并重命名,
// 注意只能导入类,不能用于函数和常量。
use \XXOO\Test\A as ClassA
}

3.4 后期静态绑定

#self 的语义本来就是“当前类”
class A
{
static public function callFuncXXOO()
{
print static::funcXXOO();
} // ...
}

二.php7的新特性

./bin/php -v  #查看PHP版本
./bin/php -m #查看安装的模块

1.变量类型

function test(int $a,string $b,array $c):int{

}

2.错误异常

try/catch

3.zval使用栈内存

节约了内存分配
php5
zval*val;make_std_zval(val); php7 zval val;

最新文章

  1. Git-将已有的项目提交到Git
  2. PHP的学习--连接MySQL的三种方式
  3. Scalaz(20)-Monad: Validation-Applicative版本的Either
  4. EF中的那些批量操作
  5. linux Kernell crash dump------kdump 的安装设置+Linux系统崩溃的修复解决过程+mysql+kvm
  6. ASP.NET MVC 以Stream 下载文件
  7. (@WhiteTaken)设计模式学习——原型模式
  8. Homebrew安装和使用
  9. Go语言的并发
  10. PowerShell Empire使用笔记
  11. tex 进度条
  12. deep learning入门:感知机
  13. 【转】Asp.Net Core2.0获取客户IP地址,及解决发布到Ubuntu服务器获取不到正确IP解决办法
  14. Chapter 8 The Simplest Plug-in Solution
  15. M0内核的STM32实现比较精准的延时
  16. Java的赋值、浅克隆和深度克隆的区别
  17. JAVA记录-java代码优化策略
  18. 复旦高等代数II(16级)每周一题
  19. mysql统计函数
  20. Android View之布局加载流程

热门文章

  1. 对于iOS性能优化的一点看法
  2. C++中static用法
  3. [Leetcode] single number 找单个数
  4. UVALive.3708 Graveyard (思维题)
  5. HashMap & SparseArray & ArrayMap 简单说明
  6. Efficient Deblurring for Shaken and Partially Saturated Images
  7. BroadcastReceiver学习
  8. POJ2155 树状数组
  9. js数组的误解
  10. 【BZOJ】1754: [Usaco2005 qua]Bull Math