91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP5.X到PHP7.1.x的特性有哪些

發布時間:2021-01-20 10:49:49 來源:億速云 閱讀:139 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關PHP5.X到PHP7.1.x的特性有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Buid-in web server內置了一個簡單的Web服務器

把當前目錄作為Root Document只需要這條命令即可:

php -S localhost:3300

也可以指定其它路徑

php -S localhost:3300 -t /path/to/root

還可以指定路由

php -S localhost:3300 router.php

命名空間(php5.3)

命名空間的分隔符為反斜桿\

namespace fox\lanmps\Table;    
class Select {}

獲取完整類別名稱

PHP5.3 中引入命名空間的別名類和命名空間短版本的功能。雖然這并不適用于字符串類名稱

use Some\Deeply\Nested\Namespace\FooBar;    
// does not work, because this will try to use the global `FooBar` class    $reflection = new ReflectionClass('FooBar');   
echo FooBar::class;

為了解決這個問題采用新的FooBar::class語法,它返回類的完整類別名稱

命名空間 use 操作符開始支持函數和常量的導入

namespace Name\Space {  
    const FOO = 42;  
    function f() { echo __FUNCTION__."\n"; }  
}  
namespace {  
    use const Name\Space\FOO;  
    use function Name\Space\f;  

    echo FOO."\n";  
    f();  
}

輸出
42
Name\Space\f

Group use declarations

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

//PHP7之前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;// PHP7之后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};

支持延遲靜態綁定

static關鍵字來引用當前類,即實現了延遲靜態綁定

class A {    
    public static function who() {    
        echo __CLASS__;    
    }    
    public static function test() {    
        static::who(); // 這里實現了延遲的靜態綁定    
    }    
}    
class B extends A {    
    public static function who() {    
         echo __CLASS__;    
    }    
}
B::test();

輸出結果:
B

支持goto語句

多數計算機程序設計語言中都支持無條件轉向語句goto,當程序執行到goto語句時,即轉向由goto語句中的標號指出的程序位置繼續執行。盡管goto語句有可能會導致程序流程不清晰,可讀性減弱,但在某些情況下具有其獨特的方便之處,例如中斷深度嵌套的循環和 if 語句。

goto a;    
echo 'Foo';    
a:    
echo 'Bar';    
for($i=0,$j=50; $i<100; $i++) {    
  while($j--) {    
    if($j==17) goto end;    
  }     
}    
echo "i = $i";    
end:    
echo 'j hit 17';

支持閉包、Lambda/Anonymous函數

閉包(Closure)函數和Lambda函數的概念來自于函數編程領域。例如JavaScript 是支持閉包和 lambda 函數的最常見語言之一。
在PHP中,我們也可以通過create_function()在代碼運行時創建函數。但有一個問題:創建的函數僅在運行時才被編譯,而不與其它代碼同時被編譯成執行碼,因此我們無法使用類似APC這樣的執行碼緩存來提高代碼執行效率。
在PHP5.3中,我們可以使用Lambda/匿名函數來定義一些臨時使用(即用即棄型)的函數,以作為array_map()/array_walk()等函數的回調函數。

echo preg_replace_callback('~-([a-z])~', function ($match) {    
    return strtoupper($match[1]);    
}, 'hello-world');    
// 輸出 helloWorld    $greet = function($name)    {    
    printf("Hello %s\r\n", $name);    
};    
$greet('World');    
$greet('PHP');    
//...在某個類中    $callback =      function ($quantity, $product) use ($tax, &$total)         {    
   $pricePerItem = constant(__CLASS__ . "::PRICE_" .  strtoupper($product));    
   $total += ($pricePerItem * $quantity) * ($tax + 1.0);    
 };

魔術方法__callStatic()和__invoke()

PHP中原本有一個魔術方法__call(),當代碼調用對象的某個不存在的方法時該魔術方法會被自動調用。新增的__callStatic()方法則只用于靜態類方法。當嘗試調用類中不存在的靜態方法時,__callStatic()魔術方法將被自動調用。

class MethodTest {    
    public function __call($name, $arguments) {    
        // 參數 $name 大小寫敏感    
        echo "調用對象方法 '$name' "    
             . implode(' -- ', $arguments). "\n";    
    }    
    /**  PHP 5.3.0 以上版本中本類方法有效  */    
    public static function __callStatic($name, $arguments) {    
        // 參數 $name 大小寫敏感    
        echo "調用靜態方法 '$name' "    
             . implode(' -- ', $arguments). "\n";    
    }    
}    

$obj = new MethodTest;    
$obj->runTest('通過對象調用');    
MethodTest::runTest('靜態調用');  // As of PHP 5.3.0

以上代碼執行后輸出如下:
調用對象方法’runTest’ –- 通過對象調用調用靜態方法’runTest’ –- 靜態調用
以函數形式來調用對象時,__invoke()方法將被自動調用。

class MethodTest {    
    public function __call($name, $arguments) {    
        // 參數 $name 大小寫敏感    
        echo "Calling object method '$name' "    
             . implode(', ', $arguments). "\n";    
    }    

    /**  PHP 5.3.0 以上版本中本類方法有效  */    
    public static function __callStatic($name, $arguments) {    
        // 參數 $name 大小寫敏感    
        echo "Calling static method '$name' "    
             . implode(', ', $arguments). "\n";    
    }    
}    
$obj = new MethodTest;    
$obj->runTest('in object context');    
MethodTest::runTest('in static context');  // As of PHP 5.3.0

Nowdoc語法

用法和Heredoc類似,但使用單引號。Heredoc則需要通過使用雙引號來聲明。
Nowdoc中不會做任何變量解析,非常適合于傳遞一段PHP代碼。

// Nowdoc 單引號 PHP 5.3之后支持    $name = 'MyName';    
echo <<<'EOT'    My name is "$name".    
EOT;    
//上面代碼輸出 My name is "$name". ((其中變量不被解析)    // Heredoc不加引號    echo <<<FOOBAR    
Hello World!    
FOOBAR;    
//或者 雙引號 PHP 5.3之后支持    echo <<<"FOOBAR"    Hello World!    
FOOBAR;

支持通過Heredoc來初始化靜態變量、類成員和類常量。

// 靜態變量    function foo()    {    
    static $bar = <<<LABEL    
Nothing in here...    
LABEL;    
}    
// 類成員、常量    class foo    {    
    const BAR = <<<FOOBAR    
Constant example    
FOOBAR;    

    public $baz = <<<FOOBAR    
Property example    
FOOBAR;    
}

在類外也可使用const來定義常量

//PHP中定義常量通常是用這種方式  define("CONSTANT", "Hello world.");  

//并且新增了一種常量定義方式  const CONSTANT = 'Hello World';

三元運算符增加了一個快捷書寫方式

原本格式為是(expr1) ? (expr2) : (expr3)
如果expr1結果為True,則返回expr2的結果。
新增一種書寫方式,可以省略中間部分,書寫為expr1 ?: expr3
如果expr1結果為True,則返回expr1的結果

$expr1=1;$expr2=2;//原格式  $expr=$expr1?$expr1:$expr2  //新格式  $expr=$expr1?:$expr2

輸出結果:
1
1

空合并運算符(??)

簡化判斷

$param = $_GET['param'] ?? 1;

相當于:

$param = isset($_GET['param']) ? $_GET['param'] : 1;

Json更懂中文(JSON_UNESCAPED_UNICODE)

echo json_encode("中文", JSON_UNESCAPED_UNICODE);  
//輸出:"中文"

二進制

$bin  = 0b1101;  
echo $bin;  
//13

Unicode codepoint 轉譯語法

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

 echo "\u{9876}"

舊版輸出:\u{9876}
新版輸入:頂

使用 ** 進行冪運算

加入右連接運算符 * 來進行冪運算。 同時還支持簡寫的 *= 運算符,表示進行冪運算并賦值。

printf("2 ** 3 ==      %d\n", 2 ** 3);printf("2 ** 3 ** 2 == %d\n", 2 ** 3 ** 2);$a = 2;$a **= 3;printf("a ==           %d\n", $a);

輸出
2 ** 3 == 8
2 * 3 * 2 == 512
a == 8

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

太空船操作符用于比較兩個表達式。當     a  

感謝各位的閱讀!關于“PHP5.X到PHP7.1.x的特性有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

牟定县| 黎城县| 卓尼县| 天气| 会泽县| 浦北县| 隆化县| 长宁县| 三明市| 从江县| 辽阳县| 建瓯市| 汝城县| 嘉峪关市| 东乡县| 黔江区| 页游| 务川| 依兰县| 马边| 甘泉县| 涞水县| 桃园市| 富裕县| 杂多县| 嵩明县| 遂川县| 嘉善县| 吉林省| 吉隆县| 八宿县| 繁昌县| 长岭县| 渭源县| 兖州市| 和平县| 延寿县| 屏南县| 清原| 庆安县| 南康市|