亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP 5.3新特性

2020-03-22 18:02:06
字體:
來源:轉載
供稿:網友
  • 1 PHP 5.3中的新特性1.1 支持命名空間 (Namespace)

    毫無疑問,命名空間是PHP5.3所帶來的最重要的新特性。

    在PHP5.3中,則只需要指定不同的命名空間即可,命名空間的分隔符為反斜桿。

    //select.php<?php        namespace ZendDbTable;        html' target='_blank'>class Select {    } ?>   

    這樣即使其它命名空間下存在名為Select的類,程序在調用時也不會產生沖突。代碼的可讀性也有所增加。
    調用方法:

    //call.php<?php        //namespace ZendDb;        include('select.php');        $s = new ZendDbTableSelect();        $s->test(); ?>
    1.2. 支持延遲靜態綁定(Late Static Binding)

    在PHP5中,我們可以在類中通過self關鍵字或者__CLASS__來判斷或調用當前類。但有一個問題,如果我們是在子類中調用,得到的結果將是父類。因為在繼承父類的時候,靜態成員就已經被綁定了。 例如:

    <?php    class A {        public static function who() {            echo __CLASS__;        }        public static function test() {            self::who();        }    }    class B extends A {        public static function who() {             echo __CLASS__;        }    }    B::test(); //以上代碼輸出的結果是: A ; 這和我們的預期不同,我們原來想得到子類的相應結果。 


    PHP 5.3.0中增加了一個static關鍵字來引用當前類,即實現了延遲靜態綁定:

    <?php    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 
    1.3 支持goto語句

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

    <?php        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';  
    1.4 支持閉包、Lambda/Anonymous函數

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

    <?php        echo preg_replace_callback('~-([a-z])~', function ($match) {            return strtoupper($match[1]);        }, 'hello-world');        // 輸出 helloWorld        $greet = function($name)        {            printf('Hello %s', $name);        };        $greet('World');        $greet('PHP');        //...在某個類中        $callback = function ($quantity, $product) use ($tax, &$total) {           $pricePerItem = constant(__CLASS__ . '::PRICE_' .  strtoupper($product));           $total += ($pricePerItem * $quantity) * ($tax + 1.0);        };        array_walk($products, $callback);  
    1.5 新增兩個魔術方法__callStatic()和__invoke()

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

    <?php    class MethodTest {        public function __call($name, $arguments) {            // 參數 $name 大小寫敏感            echo '調用對象方法 '$name' ' . implode(' -- ', $arguments). '';        }        /**  PHP 5.3.0 以上版本中本類方法有效  */        public static function __callStatic($name, $arguments) {            // 參數 $name 大小寫敏感            echo '調用靜態方法 '$name' ' . implode(' -- ', $arguments). '';        }    }      $obj = new MethodTest;    $obj->runTest('通過對象調用');    MethodTest::runTest('靜態調用');  // As of PHP 5.3.0   //以上代碼執行后輸出如下://調用對象方法'runTest' –- 通過對象調用//調用靜態方法'runTest' –- 靜態調用

    以函數形式來調用對象時,__invoke()方法將被自動調用。

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

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

    <?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來初始化靜態變量、類成員和類常量。

    <?php    // 靜態變量    function foo()    {        static $bar = <<<LABEL    Nothing in here...    LABEL;    }    // 類成員、常量    class foo    {        const BAR = <<<FOOBAR    Constant example    FOOBAR;            public $baz = <<<FOOBAR    Property example    FOOBAR;    }
    1.7 在類外也可使用const來定義常量
    //PHP中定義常量通常是用這種方式  define('CONSTANT', 'Hello world.');    //并且新增了一種常量定義方式  const CONSTANT = 'Hello World';
    1.8 三元運算符增加了一個快捷書寫方式

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

    //原格式  $expr=$expr1?$expr1:$expr2  //新格式  $expr=$expr1?:$expr2 
    1.9 HTTP狀態碼在200-399范圍內均被認為訪問成功1.10支持動態調用靜態方法
    class Test{        public static function testgo()        {             echo 'gogo!';        }    }    $class = 'Test';    $action = 'testgo';    $class::$action();  //輸出 'gogo!'   
    2 PHP5.3中其它值得注意的改變

    1.1 修復了大量bug
    1.2 PHP性能提高
    1.3 php.ini中可使用變量
    1.4 mysqlnd進入核心擴展 理論上說該擴展訪問mysql速度會較之前的MySQL 和 MySQLi 擴展快(參見http://dev.mysql.com/downloads/connector/php-mysqlnd/)
    1.5 ext/phar、ext/intl、ext/fileinfo、ext/sqlite3和ext/enchant等擴展默認隨PHP綁定發布。其中Phar可用于打包PHP程序,類似于Java中的jar機制。

    1.6 ereg 正則表達式函數 不再默認可用,請使用速度更快的PCRE 正則表達式函數

    3 棄用功能

    PHP 5.3.0 新增了兩個錯誤等級: E_DEPRECATED 和 E_USER_DEPRECATED. 錯誤等級 E_DEPRECATED 被用來說明一個函數或者功能已經被棄用. E_USER_DEPRECATED 等級目的在于表明用戶代碼中的棄用功能, 類似于 E_USER_ERROR 和 E_USER_WARNING 等級.

    下面是被棄用的 INI 指令列表. 使用下面任何指令都將導致 E_DEPRECATED 錯誤.
    define_syslog_variables
    register_globals
    register_long_arrays
    safe_mode
    magic_quotes_gpc
    magic_quotes_runtime
    magic_quotes_sybase
    棄用 INI 文件中以 '#' 開頭的注釋.


    棄用函數:
    call_user_method() (使用 call_user_func() 替代)
    call_user_method_array() (使用 call_user_func_array() 替代)
    define_syslog_variables()
    dl()
    ereg() (使用 preg_match() 替代)
    ereg_replace() (使用 preg_replace() 替代)
    eregi() (使用 preg_match() 配合 'i' 修正符替代)
    eregi_replace() (使用 preg_replace() 配合 'i' 修正符替代)
    set_magic_quotes_runtime() 以及它的別名函數 magic_quotes_runtime()
    session_register() (使用 $_SESSION 超全部變量替代)
    session_unregister() (使用 $_SESSION 超全部變量替代)
    session_is_registered() (使用 $_SESSION 超全部變量替代)
    set_socket_blocking() (使用 stream_set_blocking() 替代)
    split() (使用 preg_split() 替代)
    spliti() (使用 preg_split() 配合 'i' 修正符替代)
    sql_regcase()
    mysql_db_query() (使用 mysql_select_db() 和 mysql_query() 替代)
    mysql_escape_string() (使用 mysql_real_escape_string() 替代)
    廢棄以字符串傳遞區域設置名稱. 使用 LC_* 系列常量替代.
    mktime() 的 is_dst 參數. 使用新的時區處理函數替代.
    棄用的功能:
    棄用通過引用分配 new 的返回值.
    調用時傳遞引用被棄用.

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    色偷偷88888欧美精品久久久| 亚洲男人的天堂网站| 青青精品视频播放| 亚洲xxxx在线| 日韩欧亚中文在线| 亚洲男人天堂九九视频| 亚洲综合最新在线| 欧美精品在线播放| 欧美极品在线视频| 欧美亚洲一级片| 久久久久久久久久久av| 欧美性在线观看| 日韩在线视频免费观看高清中文| 亚洲福利精品在线| 欧美一级淫片videoshd| 九九精品在线视频| 亚洲情综合五月天| 国产精品免费在线免费| 亚洲自拍偷拍一区| 亚洲激情自拍图| 国产亚洲精品久久久优势| 91av在线视频观看| 久久久女女女女999久久| 国产精品自产拍高潮在线观看| 国产福利精品av综合导导航| 欧美激情第一页xxx| 亚洲跨种族黑人xxx| 中文日韩电影网站| 国产mv久久久| 亚洲美女www午夜| 久久久久久久久久av| 欧亚精品在线观看| 国产亚洲一级高清| 国产午夜一区二区| 亚洲风情亚aⅴ在线发布| 国产精品夜色7777狼人| 久久久综合免费视频| 欧美专区中文字幕| 欧美成人午夜激情| 亚洲欧洲xxxx| 国产精品丝袜高跟| 亚洲午夜女主播在线直播| 日韩亚洲精品视频| 国产精品h片在线播放| 欧美激情日韩图片| 成人激情视频在线观看| 在线视频欧美性高潮| 91高清视频在线免费观看| 亚洲欧美色图片| 亚洲最大在线视频| 亚洲人成电影网| 亚洲成成品网站| 97欧美精品一区二区三区| 亚洲2020天天堂在线观看| 4p变态网欧美系列| 欧美亚洲另类制服自拍| y97精品国产97久久久久久| 一区二区三区高清国产| 亚洲深夜福利视频| 懂色aⅴ精品一区二区三区蜜月| 欧美激情亚洲自拍| 亚洲精品在线视频| 亚洲free嫩bbb| www.国产一区| 午夜精品蜜臀一区二区三区免费| 国产一区私人高清影院| 国产精自产拍久久久久久蜜| 亚洲国产精彩中文乱码av在线播放| 一区国产精品视频| 久久久免费观看| 精品一区二区三区四区| 国产狼人综合免费视频| 亚洲国产精品国自产拍av秋霞| 亚洲视频999| 亚洲成人激情在线观看| 久久精品国产亚洲| 国产九九精品视频| 色爱av美腿丝袜综合粉嫩av| 亚洲最大的av网站| 欧美电影免费看| 欧美在线视频在线播放完整版免费观看| 欧美精品久久久久久久久| 欧美影院在线播放| 57pao国产精品一区| 欧美天天综合色影久久精品| 中文字幕视频在线免费欧美日韩综合在线看| 中国人与牲禽动交精品| 久久久久亚洲精品成人网小说| 成人免费视频在线观看超级碰| 成人观看高清在线观看免费| 一区二区国产精品视频| 亚洲欧洲一区二区三区在线观看| 国产精品高潮在线| 国自产精品手机在线观看视频| 欧美激情综合色| 欧美成人激情在线| 久久久91精品国产一区不卡| 色妞久久福利网| 久久影视电视剧免费网站| 精品国内产的精品视频在线观看| 97视频免费在线观看| 久久99青青精品免费观看| 日韩男女性生活视频| 国产精品电影网| 欧美激情高清视频| 久久在线精品视频| 亚洲欧美日韩国产精品| 欧美日韩一区二区在线| 国产91精品在线播放| 国产在线拍偷自揄拍精品| 成人免费视频a| 欧美日韩国产丝袜美女| 欧美精品一区二区三区国产精品| 国产成人精品一区二区在线| 日韩在线不卡视频| 久久高清视频免费| 欧美性69xxxx肥| 久久精品国产亚洲精品2020| 国产亚洲精品美女久久久| 精品日韩视频在线观看| 精品日韩中文字幕| 日韩欧美高清视频| 久久久亚洲天堂| 色在人av网站天堂精品| 色无极亚洲影院| 亚洲国产精品人人爽夜夜爽| 亚洲免费伊人电影在线观看av| 日韩av电影在线免费播放| 久久精品视频一| 欧美激情欧美激情在线五月| 91精品免费看| 91精品国产综合久久香蕉922| 4438全国亚洲精品在线观看视频| 亚洲欧美在线磁力| 亚洲一区美女视频在线观看免费| 亚洲美女久久久| 国产精品日韩欧美综合| 色妞欧美日韩在线| 亚洲高清一二三区| 亚洲jizzjizz日本少妇| 亚洲欧美日韩中文在线| 日韩国产精品亚洲а∨天堂免| 色婷婷av一区二区三区久久| 久久久av一区| 色综久久综合桃花网| 日韩av手机在线看| 欧美日韩在线观看视频| 国产精品一区专区欧美日韩| 国产在线播放91| 黑人精品xxx一区| 日韩av在线免费观看一区| 91精品久久久久久久久久| 欧美特黄级在线| 91丨九色丨国产在线| 欧美极品少妇xxxxx| 国产精品久久久久久久久久ktv| 日韩精品在线播放| 久久精品国产欧美亚洲人人爽| 亚洲国产精品视频在线观看| 久久精品色欧美aⅴ一区二区| 亚洲男人天堂视频| 日韩中文字幕在线免费观看| 成人黄色在线免费| 国产精品国产三级国产aⅴ浪潮|