• php7 新内容


    1、use增强

    以thinkphp5.0为例

    namespace apphomecontroller;
    use think{Loader,Controller,Captcha,Request};

    2、匿名类

    <?php
    class Outer
    {
        private $prop = 1;
        protected $prop2 = 2;
        protected function func1()
        {
            return 3;
        }
        public function func4()
        {
            return $this->prop;
        }
        public function func2()
        {
            return new class() extends Outer {
              
                public function func3()
                {
                return $this->prop2 + $this->func4() + $this->func1();
                }
            };
        }
    }
    
    echo (new class() extends Outer{})->func4();
    echo (new Outer)->func2()->func3();
    <?php
    $arr = array();
    for ($i=0; $i<3; $i++){
      $arr[] = new class($i){
        public $index=0;
        function __construct($i)
        {
          $this->index = $i;
          echo 'create</br>';
        }
        public function getVal(){
          echo $this->index;
        }
      };
    }
    $arr[1]->getVal();
    echo '<br>';
    var_dump($arr[1]);

    Generator 加强

    <?php
    $input = <<<'EOF'
    1;PHP;Likes dollar signs
    2;Python;Likes whitespace
    3;Ruby;Likes blocks
    EOF;
    
    function input_parser($input) {
        foreach (explode("
    ", $input) as $line) {
            $fields = explode(';', $line);
            $id = array_shift($fields);
    
            yield $id => $fields;
        }
    }
    
    foreach (input_parser($input) as $id => $fields) {
        echo "$id:<br>";
        echo "    $fields[0]<br>";
        echo "    $fields[1]<br>";
    }
    <?php
    function gen_three_nulls() {
        foreach (range(1, 3) as $i) {
            yield;
        }
    }
    
    var_dump(iterator_to_array(gen_three_nulls()));
    <?php
    function gen()
    {
        yield 1;
        yield 2;
    
        yield from gen2();
    }
    
    function gen2()
    {
        yield 3;
        yield 4;
    }
    print_r(iterator_to_array(gen(),false));
    // foreach (gen() as $val)
    // {
    //     echo $val, PHP_EOL;
    // }

    Closure::call()

    <?php
    class A {private $x = 1;}
    
    // Pre PHP 7 代码
    $getXCB = function() {return $this->x;};
    $getX = $getXCB->bindTo(new A, 'A'); // intermediate closure
    echo $getX();
    
    // PHP 7+ 代码
    $getX = function() {return $this->x;};
    echo $getX->call(new A);

    define可定义数组常量

    <?php
    define('ANIMALS', [
        'dog',
        'cat',
        'bird'
    ]);
    
    echo ANIMALS[1]; // 输出 "cat"
    ?>

    函数新增内容

    1、新增参数声明类型(bool,float,int,string)

    2、严格模式:declare(strict_types=1);

    3、可变参数数量(...$num)

    4、新增函数返回值的类型声明

    5、可变函数,使用变量保存函数名

    6、匿名函数

    一般用作一个回调函数参数的值,也可以作为变量的值

    7、递归和迭代

    新增变化

    1、php7版本,字符串中的十六进制字符,不在作为数字。

    2、intdiv(x,y) 整除运算符(x除以y)

    3、x<=>y 组合比较符 (x等于y,返回0;x大于y,返回1;x小于y,返回-1)

    4、三元运算符

    $a = (1>2)?'big':'small';

    5、变量作用域:局部、全局、静态、参数

    函数体内部定义的变量为局部变量,函数体外部定义的变量为全局变量,使用static关键字可以使函数执行完毕局部变量保留,函数定义的参数为参数变量

    6、常量定义

    define()和const定义

    7、预定义常量

    __LINK__:文件中的当前行号

    __FILE__:文件的完整路径和文件名

    __DIR__:文件所在的目录

    __FUNCTION__:函数名称

    __CLASS__:类的名称

    __TRAIT__:trait的名字

    __METHOD__:类的方法名

    __NAMESPACE__:当前命名空间的名称

    php7新增以下常量

    PHP_INT_MIN等等

    8、while循环

    $i = 1;

    while($i<=10){

      echo $i++;

    }

    打印结果:12345678910

    9、do while

    $i=0;

    do{

      $i++;

      echo $i;

    }while($i<10);

    执行结果:12345678910

    10、goto

    goto a;

    echo 'adad';

    a:

    echo 'sdsd';

    执行结果:sdsd

  • 相关阅读:
    将Excel嵌入你的.Net程序
    调用资源文件
    Socket Error# Description
    LPCTSTR 和其它
    linux send and recv详解
    stdafx.h的作用
    setsocketopt() usage
    openfire源码入门级分析
    openfire分析
    关于xmpp
  • 原文地址:https://www.cnblogs.com/xwlong/p/7895964.html
Copyright © 2020-2023  润新知