真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有衛(wèi)輝免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

Buid-in web server內(nèi)置了一個簡單的Web服務(wù)器

把當(dāng)前目錄作為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 操作符開始支持函數(shù)和常量的導(dǎo)入

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 導(dǎo)入的類、函數(shù)和常量現(xiàn)在可以通過單個 use 語句 一次性導(dǎo)入了。

//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};

支持延遲靜態(tài)綁定

static關(guān)鍵字來引用當(dāng)前類,即實現(xiàn)了延遲靜態(tài)綁定

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

輸出結(jié)果:
B

支持goto語句

多數(shù)計算機程序設(shè)計語言中都支持無條件轉(zhuǎn)向語句goto,當(dāng)程序執(zhí)行到goto語句時,即轉(zhuǎn)向由goto語句中的標(biāo)號指出的程序位置繼續(xù)執(zhí)行。盡管goto語句有可能會導(dǎo)致程序流程不清晰,可讀性減弱,但在某些情況下具有其獨特的方便之處,例如中斷深度嵌套的循環(huán)和 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函數(shù)

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

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

魔術(shù)方法__callStatic()和__invoke()

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

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

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

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

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

    /**  PHP 5.3.0 以上版本中本類方法有效  */    
    public static function __callStatic($name, $arguments) {    
        // 參數(shù) $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 <<

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

// 靜態(tài)變量    function foo()    {    
    static $bar = <<

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

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

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

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

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

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

輸出結(jié)果:
1
1

空合并運算符(??)

簡化判斷

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

相當(dāng)于:

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

Json更懂中文(JSON_UNESCAPED_UNICODE)

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

二進制

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

Unicode codepoint 轉(zhuǎn)譯語法

這接受一個以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

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

太空船操作符用于比較兩個表達式。當(dāng)     a大于、等于或小于  

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


網(wǎng)站名稱:PHP5.X到PHP7.1.x的特性有哪些
當(dāng)前網(wǎng)址:http://weahome.cn/article/iieeii.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部