国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

PHP7新特性簡述

2019-11-19 16:22:09
字體:
來源:轉載
供稿:網友

類型聲明

看代碼,一目了然了。

class person{  public function age(int $age) : string  {    return 'Age is ' . $age;  }}

命名空間與use關鍵字批量聲明

非混合模式

use Publishers/Packt/{ Book, Ebook, Video};use function Publishers/Packt/{ getBook, saveBook };use const Publishers/Packt/{ COUNT, KEY };

混合模式

use Publishers/Packt/{  Book,  Ebook,  Video,  function getBook,  function saveBook,  const COUNT,  const KEY};

復合模式

use Publishers/Packt/{  Paper/Book,  Electronic/Ebook,  Media/Video};

匿名類

匿名類的聲明與使用時同時進行的,具備其他類所具備的所以功能,區別在于匿名類沒有類名。語法如下:

new class(argument) { definition };

匿名類是沒有類名的,但在PHP內部,會在內存的引用地址表中為其分配一個全局唯一的名稱。

$name = new class('You') {  public function __construct($name)  {    echo $name;  }};

匿名類可以繼承父類及父類的方法。

class Packt{  protected $number;  public function __construct()  {    echo 'parent construct';  }  public function getNumber() : float  {    return $this->number;  }}$number = new class(5) extends Packt{  public function __construct(float $number)  {    parent::__construct();    $this->number = $number;  }};echo $number->getNumber();

匿名類可以繼承接口。

interface Publishers{  public function __construct(string name, string address);  public function getName();  public function getAddress();}class packt{  protected $number;  protected $name;  protected $address;  public function ...}$info = new class('name', 'address') extends Packt implement Publishers{  public function __construct(string $name, string $address)  {    $this->name = $name;    $this->address = $address;  }  public function getName() : string  {    return $this->name;  }  public function getAddress() : string  {    return $this->address;  }}echo $info->getName() . ' ' . $info->getAddress();

匿名類可以嵌套在一個類中使用。

class Math{  public $first_number = 10;  public $second_number = 10;  public function add() : float  {    return $this->first_number + $this->second_number;  }  public function mutiply_sum()  {    return new class() extends Math    {      public function mutiply(float $third_number) : float      {        return $this->add() * $third_number;      }    };  }}$math = new Math();echo $math->mutiply_sum()->mutiply(2);

摒棄老式構造函數

從PHP4開始,構造函數可以通過命名與類名一致的方式來聲明自己是構造函數,在PHP7中這種方式聲明構造函數依然可以使用,但不推薦使用,會輸出不推薦的信息 Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Packt has a deprecated constructor in ...,PHP7中推薦使用 __construct()。

throwable接口

從PHP7開始,程序中的fatal錯誤都可以被截獲,PHP7提供了throwable接口,異常與錯誤都繼承于這個接口。

Error

現在大多數的fatal錯誤情況會拋出一個error實例,類似于截獲異常,error實例可以被try/catch截獲。

try{  ...} catch(Error $e){  echo $e->getMessage();}

一些錯誤情況只有error的子實例會被拋出,例如 TypeError、DivisionByZeroError、ParseError等。

<=>操作符

<=>操作符將==、<、>三個比較操作符打包在了一起,具體使用規則如下。

操作符兩邊相等時返回 0

操作符左邊小于右邊時返回 -1

操作符左邊大于右邊時返回 1

null合并運算符

?? 合并運算符,在第一操作數存在時可被直接返回,否則返回第二操作數。

$title = $post['title'] ?? NULL;$title = $post['title'] ?? $get['title'] ?? 'No title';

uniform變量語法

$first = ['name' => 'second'];$second = 'two';echo $$first['name'];echo ${Sfirst['name']}; // PHP7...echo $object->$methods['title'];echo $object->{$methods['title']}; // PHP7

主要是因為PHP7與之前版本PHP的解析方式不一樣,在PHP7中加上花括號就可以啦,就像上邊代碼這樣,否則會報錯。

常量數組

從PHP5.6開始常量數組可以用const關鍵字來聲明,在PHP7中常量數組可以通過define函數來初始化。

const STORES = ['en', 'fr', 'ar']; // php5.6define('STORES', ['en', 'fr', 'ar']); // php7

switch中的default默認值

在PHP7之前,switch語句中允許多個default默認值,從PHP7開始,只能有一個default默認值,否則會產生fatal級別錯誤。

// php7之前switch (true) {  case 'value':    # code...    break;  default:    # code...    break;  default:    # code...    break;}// php7switch (true) {  case 'value':    # code...    break;  default:    # code...    break;}

session_start函數中的選項數組

在PHP7之前,使用session的時候都必須先調用session_start()函數,且這個函數并沒有參數需要傳遞,所有session相關的配置都在php.ini文件中,從PHP7開始,可以在調用這個函數時傳遞參數選項數組,這些設置信息將覆蓋php.ini中的session配置。

session_start([  'cookie_lifetime' => 3600,  'read_and_close' => true]);

unserialize函數引入過濾器

unserialize()可以反序列化任何類型的對象,沒有任何過濾項,不安全,PHP7在unserialize()中引入了過濾器,且默認允許反序列化所有類型的對象。

$result = unserialize($object, ['allowed_classes' => ['Book', 'Ebook']]);

以上所述是小編給大家介紹的PHP7新特性簡述,希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 霍林郭勒市| 塔河县| 石阡县| 化德县| 阜新市| 罗平县| 江川县| 邹城市| 新竹市| 六盘水市| 泾川县| 浦县| 溧水县| 长白| 隆化县| 慈利县| 昌江| 灵寿县| 西乌| 楚雄市| 重庆市| 迭部县| 思南县| 武平县| 澜沧| 和顺县| 焦作市| 吴川市| 法库县| 琼海市| 攀枝花市| 图们市| 酉阳| 甘孜县| 武鸣县| 文登市| 六盘水市| 呼伦贝尔市| 无为县| 临西县| 南昌市|