六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

首頁 > 電腦資訊 > 網站建設SEO

PHP7新特性_PHP 常用教程

作者:佚名   來源:本站   時間:2018-01-01  點擊:79次

       PHP(外文名:PHP Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。

PHP語法吸收了C語言、Java和Perl的特點,易于學習,使用廣泛,主要適用于Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯后代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快的效果。

標量類型聲明

PHP 7 中的函數的形參類型聲明可以是標量了。在 PHP 5 中只能是類名、接口、array 或者 callable (PHP 5.4,即可以是函數,包括匿名函數),現在也可以使用 string、int、float和 bool 了。

php // 強制模式 function sumOfInts(int ...$ints) {     return array_sum($ints); }  var_dump(sumOfInts(2, '3', 4.1));

以上實例會輸出:

int(9)

需要注意的是上文提到的嚴格模式的問題在這里同樣適用:強制模式(默認,既強制類型轉換)下還是會對不符合預期的參數進行強制類型轉換,嚴格模式下則觸發 TypeError 的致命錯誤。


返回值類型聲明

PHP 7 增加了對返回類型聲明的支持。 類似于參數類型聲明,返回類型聲明指明了函數返回值的類型�?捎玫念愋团c參數聲明中可用的類型相同。

php  function arraysSum(array ...$arrays): array {     return array_map(function(array $array): int {         return array_sum($array);     }, $arrays); }  print_r(arraysSum([1,2,3], [4,5,6], [7,8,9]));

以上實例會輸出:

Array (     [0] => 6     [1] => 15     [2] => 24 )

NULL 合并運算符

由于日常使用中存在大量同時使用三元表達式和 isset()的情況,NULL 合并運算符使得變量存在且值不為NULL, 它就會返回自身的值,否則返回它的第二個操作數。

實例如下:

php // 如果 $_GET['user'] 不存在返回 'nobody',否則返回 $_GET['user'] 的值 $username = $_GET['user'] ?? 'nobody'; // 類似的三元運算符 $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; ?>

太空船操作符(組合比較符)

太空船操作符用于比較兩個表達式。當$a大于、等于或小于$b時它分別返回-1、0或1。

實例如下:

php // 整型 echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1  // 浮點型 echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1   // 字符串 echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 ?>

通過 define() 定義常量數組

實例如下:

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

匿名類

現在支持通過new class 來實例化一個匿名類,實例如下:

php interface Logger {     public function log(string $msg); }  class Application {     private $logger;      public function getLogger(): Logger {          return $this->logger;     }      public function setLogger(Logger $logger) {          $this->logger = $logger;     } }  $app = new Application; $app->setLogger(new class implements Logger {     public function log(string $msg) {         echo $msg;     } });  var_dump($app->getLogger()); ?>

以上實例會輸出:

object(class@anonymous)#2 (0) { }

Unicode codepoint 轉譯語法

這接受一個以16進制形式的 Unicode codepoint,并打印出一個雙引號或heredoc包圍的 UTF-8 編碼格式的字符串。 可以接受任何有效的 codepoint,并且開頭的 0 是可以省略的。

echo "\u{aa}"; echo "\u{0000aa}"; echo "\u{9999}";

以上實例會輸出:

ª ª (same as before but with optional leading 0's) 香

Closure::call()

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);

以上實例會輸出:

1 1

為unserialize()提供過濾

這個特性旨在提供更安全的方式解包不可靠的數據。它通過白名單的方式來防止潛在的代碼注入。

php  // 轉換對象為 __PHP_Incomplete_Class 對象 $data = unserialize($foo, ["allowed_classes" => false]);  // 轉換對象為 __PHP_Incomplete_Class 對象,除了 MyClass 和 MyClass2 $data = unserialize($foo, ["allowed_classes" => ["MyClass", "MyClass2"]);  // 默認接受所有類 $data = unserialize($foo, ["allowed_classes" => true]);

IntlChar

新增加的 IntlChar 類旨在暴露出更多的 ICU 功能。這個類自身定義了許多靜態方法用于操作多字符集的 unicode 字符。

php printf('%x', IntlChar::CODEPOINT_MAX); echo IntlChar::charName('@'); var_dump(IntlChar::ispunct('!'));

以上實例會輸出:

10ffff COMMERCIAL AT bool(true)

若要使用此類,請先安裝Intl擴展


預期

預期是向后兼用并增強之前的 assert() 的方法。 它使得在生產環境中啟用斷言為零成本,并且提供當斷言失敗時拋出特定異常的能力。

php ini_set('assert.exception', 1);  class CustomError extends AssertionError {}  assert(false, new CustomError('Some error message')); ?>

以上實例會輸出:

Fatal error: Uncaught CustomError: Some error message

use 加強

從同一 namespace 導入的類、函數和常量現在可以通過單個 use 語句 一次性導入了。

php  //  PHP 7 之前版本用法 use some\namespace\ClassA; use some\namespace\ClassB; use some\namespace\ClassC as C;  use function some\namespace\fn_a; use function some\namespace\fn_b; use function some\namespace\fn_c;  use const some\namespace\ConstA; use const some\namespace\ConstB; use const some\namespace\ConstC;  // PHP 7+ 用法 use some\namespace\{ClassA, ClassB, ClassC as C}; use function some\namespace\{fn_a, fn_b, fn_c}; use const some\namespace\{ConstA, ConstB, ConstC}; ?>


Generator 加強

增強了Generator的功能,這個可以實現很多先進的特性

php php  function gen() {     yield 1;     yield 2;      yield from gen2(); }  function gen2() {     yield 3;     yield 4; }  foreach (gen() as $val) {     echo $val, PHP_EOL; }  ?>

以上實例會輸出:

1 2 3 4

整除

新增了整除函數 intdiv(),使用實例:

php var_dump(intdiv(10, 3)); ?>

以上實例會輸出:

int(3)

推薦游戲

換一換
主站蜘蛛池模板: 四虎免费影院在线播放 | 天天干夜夜爱 | 我要看免费一级毛片 | 亚洲免费在线视频观看 | 亚洲第一狼人区 | 婷婷综合在线观看丁香 | 完整欧美一级淫片免费看 | 日本草草影院 | 中文字幕在线免费视频 | 五月天天 | 五月婷婷在线观看 | 齐天大性床战铁扇公主 | 色天天综合网色鬼综合 | 天天射天天舔 | 日韩欧美高清在线 | 婷婷影院在线综合免费视频 | 又大又硬又爽又粗又快的视频免费 | 依人在线免费视频 | 日本韩国视频在线观看 | 天堂网中文在线 | 日韩中文字幕免费在线观看 | 五月激激激综合网色播免费 | 天天操天天射天天 | 日本高清在线观看视频你懂的 | 亚洲成av人影片在线观看 | 欧美又肥又胖的大bbwⅹ | 天堂中文资源在线地址 | 日本视频一区在线观看免费 | 一级做a爰在线就看 | 亚洲大尺度 | 日本香蕉一区二区在线观看 | 亚洲欧洲高清 | 亚洲高清在线看 | 日本96在线精品视频免费观看 | 亚洲国产成人va在线观看网址 | 三级特黄高清完整视频 | 欧美专区在线播放 | 日韩中文字幕高清在线专区 | 午夜在线社区视频 | 日本不卡视频 | 日本日本在线观看视频 |