php7 新內容

一、use加強php

以thinkphp5.0爲例thinkphp

namespace app\home\controller;
use think\{Loader,Controller,Captcha,Request};數組

二、匿名類php7

<?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 增強app

<?php
$input = <<<'EOF'
1;PHP;Likes dollar signs
2;Python;Likes whitespace
3;Ruby;Likes blocks
EOF;

function input_parser($input) {
    foreach (explode("\n", $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可定義數組常量thinkphp5

<?php
define('ANIMALS', [
    'dog',
    'cat',
    'bird'
]);

echo ANIMALS[1]; // 輸出 "cat"
?>

函數新增內容this

一、新增參數聲明類型(bool,float,int,string)spa

二、嚴格模式:declare(strict_types=1);code

三、可變參數數量(...$num)

四、新增函數返回值的類型聲明

五、可變函數,使用變量保存函數名

六、匿名函數

通常用做一個回調函數參數的值,也能夠做爲變量的值

七、遞歸和迭代

新增變化

一、php7版本,字符串中的十六進制字符,不在做爲數字。

二、intdiv(x,y) 整除運算符(x除以y)

三、x<=>y 組合比較符 (x等於y,返回0;x大於y,返回1;x小於y,返回-1)

四、三元運算符

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

五、變量做用域:局部、全局、靜態、參數

函數體內部定義的變量爲局部變量,函數體外部定義的變量爲全局變量,使用static關鍵字可使函數執行完畢局部變量保留,函數定義的參數爲參數變量

六、常量定義

define()和const定義

七、預約義常量

__LINK__:文件中的當前行號

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

__DIR__:文件所在的目錄

__FUNCTION__:函數名稱

__CLASS__:類的名稱

__TRAIT__:trait的名字

__METHOD__:類的方法名

__NAMESPACE__:當前命名空間的名稱

php7新增如下常量

PHP_INT_MIN等等

八、while循環

$i = 1;

while($i<=10){

  echo $i++;

}

打印結果:12345678910

九、do while

$i=0;

do{

  $i++;

  echo $i;

}while($i<10);

執行結果:12345678910

十、goto

goto a;

echo 'adad';

a:

echo 'sdsd';

執行結果:sdsd

相關文章
相關標籤/搜索