一、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