php5.0后的新特性

一.PHP5.3

1.支持命名空间

2.增加goto语句

   public function testStop()
    {
        goto aaa;
        echo 1;
        aaa:
        echo 2;
    }

3.新增两个魔术方法__callStatic() 调用不存在的或者是私有的静态方法时启用,当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。

  public function __invoke()
    {
        // TODO: Implement __invoke() method.
        echo 222;
        //$a=new TianYe();
        // echo $a();
    }
    public function __toString()
    {
        // TODO: Implement __toString() method.
        //$a=new TianYe();
        // echo $a;
        return 'sss';
    }
    public  static  function __callStatic($name,$arr){
        dd($arr);
    }

4.添加NowDoc语法的支持

        $c='222';
        $a=<<< ty
dskdkskdks,$c
ty;
//这种语法默认是双引号解析变量的,所以输出是dskdkskdks,222
//但是如果ty加上单引号
        $c='222';
        $a=<<< 'ty'
dskdkskdks,$c
ty;
//这时候的解析就是按照单引号解析了,变量不会被解析
//输出是dskdkskdks,$c,
//其实就是ty如果什么都不加=="ty",按照双引号解析变量

二 php5.4

1.新增trait

// Traits不能被单独实例化,只能被类所包含
trait SayWorld
{
    public function sayHello()
    {
        echo 'World!';
    }
}

class MyHelloWorld
{
    // 将SayWorld中的成员包含进来
    use SayWorld;
}

$xxoo = new MyHelloWorld();
// sayHello() 函数是来自 SayWorld 构件的
$xxoo->sayHello();
//方法覆盖的优先级
class 类的本类中的方法优先级最高,下来就trait的,最后是extends的方法
也就是说如果有同一个方法,最后执行的class本类的方法,trait和父类共有的,执行trait的方法

2.新增短数组的语法

// 原来的数组写法
$arr = array("key" => "value", "key2" => "value2");
$arr = array(1,2,3,4);
// 简写形式
$arr = ["key" => "value", "key2" => "value2"];
$arr = [1,2,3,4];

3.对函数如果返回数组可以直接解析了

        $a='1,2';
        echo explode(',',$a)[1];
        exit;    

4.新增在实例化的时候返回类的成员

(new Foo())->bar();
//一般如果有构造函数不要这样调用

5.session提供上传进度的支持

通过 $_SESSION["upload_progress_name"] 就可以获得当前文件上传的进度信息,结合 Ajax 就能很容易的实现上传进度条。

6.让json更懂中文

$a=['naame'=>'快递费'];
        dd(json_encode($a));//{"naame":"\u5feb\u9012\u8d39"}"
        dd(json_encode($a,JSON_UNESCAPED_UNICODE));//{"naame":"快递费"}

7.默认的编码从ISO-8859-1变为utf-8

三:php5.5

1.新增generators

yield关键字用于当函数需要返回一个迭代器的时候,逐个返回值。

 

  function number10()
    {
        for($i = 1; $i <= 10; $i += 1)
            yield $i;//相当于定义了一个1-10的数组并且返回
    }

    public function testStop()
    {
        $a=$this->number10();
        foreach ($a as $v){
            echo $v,PHP_EOL;
        }//输出1-10
    }

2.foreach支持list

$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b)) {
    echo $a.$b\n";
}

 

posted @ 2016-11-14 00:19  tianye_guazi  阅读(236)  评论(0编辑  收藏  举报