VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • php5.3/5.4/5.5/5.6/7常见新增特性汇总整理

本文实例总结了php5.3/5.4/5.5/5.6/7新增特性。分享给大家供大家参考,具体如下:

php新增的特性,只是略微整理,并不完全。

一、php5.3添加的新特性

1、?:简化的三元运算符

  1. <?php 
  2. $cur = $cur ? $cur : 1; 
  3. $cur = $cur ?: 1; 

2、匿名函数

  1. <?php 
  2. $test = function() { 
  3.   echo 'test'
  4. }; 
  5. $test(); 
  6.  
  7. $arr = array(1, 2, 3, 4, 5); 
  8. $arr = array_map(function($n) { 
  9.   return $n * 2; 
  10. }, $arr); 
  11. print_r($arr); 

3、命名空间

  1. <?php 
  2. namespace Test; 
  3.  
  4. class Person { 
  5.   public function say() { 
  6.     echo 'hello'
  7.   } 
  8. $p = new \Test\Person(); 
  9. $p->say(); 

4、支持延迟静态绑定

  1. <?php 
  2. class A { 
  3.   public static function who() { 
  4.     echo __CLASS__
  5.   } 
  6.   public static function test() { 
  7.     //self::who(); 
  8.     //static来引用当前的类,这里调用的是B类的静态方法who 
  9.     static::who(); 
  10.   } 
  11. class B extends A { 
  12.   public static function who() { 
  13.     echo __CLASS__
  14.   } 

B类调用继承于A的静态方法test,但该方法中self已经绑定了A类,所以调用的是父类的who方法。

而新增的static则引用当前类,调用的则是本类的who方法。

B::test();

5、支持goto语句

  1. <?php 
  2. for($i = 0; $i < 100; ++$i) { 
  3.   if($i == 50) { 
  4.     goto end
  5.   } 
  6. end : echo $i

6、新增两个魔术方法__callStatic()和__invoke()

  1. <?php 
  2. class A { 
  3.   public static function __callStatic($name$arguments) { 
  4.     echo '你调用了不存在的静态方法:'$name
  5.   } 
  6.   public function __invoke($i) { 
  7.     echo '你把对象当函数调用了,还传了个值:'$i
  8.   } 
  9. A::xxx(); 
  10. $a = new A(); 
  11. $a(6); 

7、新增nowdoc语法

  1. <?php 
  2. $name = 'test'
  3.  
  4. //nowdoc使用单引号,内容不做变量解析 
  5. $a = <<< 'TEST' 
  6. 测试$name 
  7. TEST; 
  8.  
  9. //heredoc不加引号或加双引号,内容做变量解析 
  10. $b = <<< TEST 
  11. 测试$name 
  12. TEST; 
  13.  
  14. echo $a
  15. echo $b

8、类外也可用const定义常量

<?php

const PI = 3.14;

9、http状态码在200-399范围内均被认为访问成功。

10、支持动态调用静态方法

  1. <?php 
  2. class A { 
  3.   public static function test() { 
  4.     echo 'test'
  5.   } 
  6. $cName = 'A'
  7. $mName = 'test'
  8. $cName::$mName(); 

二、php5.4添加的特性

1、内置一个简单的Web服务器

2、数组的简化写法

  1. <?php 
  2. $arr = array(1, 2, 3); 
  3. $arr = array('a' => 1, 'b' => 2); 
  4.  
  5. $arr = [1, 2, 3]; 
  6. $arr = ['a' => 1, 'b' => 2]; 

3、新增支持对函数返回数组的成员访问解析

  1. <?php 
  2. function getArr() { 
  3.   return array(1, 2, 3, 4, 5); 
  4. echo getArr()[2]; 

4、新增实例化时访问类成员

  1. <?php 
  2. class A { 
  3.   public function test() { 
  4.     echo 'test'
  5.   } 
  6. (new A())->test(); 

5、新增对短标签的支持,无论是否设置short_open_tag。

6、session提供上传进度支持,$_SESSION['upload_progress_name']。

7、新增加了$_SERVER['REQUEST_TIME_FLOAT'],用来统计服务请求时间。

8、默认使用mysqlnd,mysqli,pdo默认使用mysqlnd本地库。

9、让json更懂中文

  1. <?php 
  2. $arr = array
  3.   'name' => '哈哈'
  4.   'age' => 25, 
  5. ); 
  6. echo json_encode($arr, JSON_UNESCAPED_UNICODE); 

10、新增二进制直接量

  1. <?php 
  2. $bin = 0b101; 
  3. echo $bin

11、默认default_charset从ISO-8859-1已经变为UTF-8

12、新增Traits

  1. <?php 
  2. trait A { 
  3.   public function fly() { 
  4.     echo '会飞'
  5.   } 
  6. trait B { 
  7.   public function swim() { 
  8.     echo '游泳'
  9.   } 
  10. class People { 
  11.   use A, B; 
  12. (new People())->fly(); 

三、php5.5新增的特性

1、empty支持传入一个任意表达式,不仅是一个变量

  1. <?php 
  2. var_dump(emptyempty(3 * 3)); 
  3.  
  4. function test() { 
  5.   return false; 
  6. var_dump(emptyempty(test())); 

2、新增密码哈希API,password_hash

3、新增生成器

  1. <?php 
  2. $arr = function() { 
  3.   for($i = 0; $i < 10; ++$i) { 
  4.     //变量$i的值在不同的yield之间是保持传递的 
  5.     yield $i
  6.   } 
  7. }; 
  8. $data = $arr(); 
  9. foreach($data as $v) { 
  10.   echo $v

4、新增finally关键字

  1. <?php 
  2. try { 
  3.   throw new Exception('我是异常'); 
  4. } catch(Exception $e) { 
  5.   echo $e->getMessage(); 
  6. } finally { 
  7.   echo 'finally'

5、新增boolval()函数

6、新增array_column()函数

  1. <?php 
  2. $arr = array
  3.   array('name' => 'test1''age' => 22), 
  4.   array('name' => 'test2''age' => 23), 
  5.   array('name' => 'test3''age' => 24), 
  6. ); 
  7. //取出name列 
  8. print_r(array_column($arr'name')); 
  9. //取出name列,并用age作键 
  10. print_r(array_column($arr'name''age')); 

7、foreach支持list()

  1. <?php 
  2. $arr = [ 
  3.   [3, 3], 
  4.   [4, 4], 
  5.   [5, 5], 
  6. ]; 
  7. foreach($arr as list($a$b)) { 
  8.   echo $a'-'$b'<br>'

8、增加了opcache扩展

四、php5.6新增的特性

1、可以使用表达式定义常量

  1. <?php 
  2. const ONE = 1 * 1; 
  3. class A { 
  4.   const TWO = 1 * 2; 
  5.   const THREE = self::TWO + 1; 
  6.     
  7.   public function test($i = self::THREE + ONE) { 
  8.     echo $i
  9.   } 
  10. (new A())->test(); 

2、使用...定义变长函数参数

  1. <?php 
  2. function total(...$nums) { 
  3.   $total = 0; 
  4.   foreach($nums as $num) { 
  5.     $total += $num
  6.   } 
  7.   return $total
  8. echo total(1, 2, 3, 4, 5); 
  9. $arr = [3, 4, 5, 6]; 
  10. echo total(...$arr); 

3、使用**进行幂运算

  1. <?php 
  2. echo 2 ** 4; 
  3. $a = 2; 
  4. $a **= 4; 
  5. echo $a

4、use function和use const

  1. <?php 
  2. namespace A { 
  3.   const PI = 3.14; 
  4.   function test() { 
  5.     echo 'test'
  6.   } 
  7. namespace B { 
  8.   use function \A\test; 
  9.   use const \A\PI; 
  10.     
  11.   echo PI; 
  12.   test(); 

5、加入hash_equals()函数,以恒定的时间消耗来进行字符串比较,以避免时序攻击。

6、加入__debugInfo()

当使用var_dump()输出对象的时候,可以用来控制要输出的属性和值。

  1. <?php 
  2. class A { 
  3.   protected $a = 1; 
  4.   protected $b = 2; 
  5.   protected $c = 3; 
  6.   public function __debugInfo() { 
  7.     //返回值必须是数组 
  8.     return array
  9.       'a' => $this->a, 
  10.     ); 
  11.   } 
  12. var_dump((new A())); 

五、php7新增的特性

1、??运算符(NULL合并运算符)

<?php

$page = $_GET['page'] ?? 1;

2、标量类型声明

3、函数返回值类型声明

  1. <?php 
  2. declare(strict_types=1); 
  3.  
  4. function add(int $num1, int $num2) : int { 
  5.   return $num1 + $num2
  6. echo add(2, 3); 
  7. //在严格模式下,下面这行会报错 
  8. echo add(2.0, 3.0); 

4、匿名类

  1. <?php 
  2. (new class { 
  3.   public function test() { 
  4.     echo 'test'
  5.   } 
  6. })->test(); 

5、通过define()定义常量数组

  1. <?php 
  2. define('ARR', ['a''b''c']); 
  3. echo ARR[2];
  4.  



出处:http://www.phpfensi.com/article/20220215/19881.html


相关教程