首頁  >  文章  >  後端開發  >  php5.2和5.3有什麼差別

php5.2和5.3有什麼差別

王林
王林原創
2021-09-27 14:24:123011瀏覽

php5.2和5.3的差別有:1、php5.3棄用了Register Globals、Magic Quotes等功能;2、新增了魔術方法__invoke()、__callStatic();3、支持用const定義常數。

php5.2和5.3有什麼差別

本文操作環境:windows10系統、php 5.2&&php 5.3、thinkpad t480電腦。

很多朋友可能不太了解php 5.2和php 5.3之間有什麼差別。下面我們就來具體介紹下這兩個版本有什麼差別,具體的區別在哪裡,一起來看吧。

我們先來看看php 5.2這個版本。

php5.2(2006-2011)

JSON的支持
       增加了json_encode(),json_decode()等函数

接著我們來看下php 5.3這個版本。

php5.3(2009-2012)

PHP5.3 算是一個非常大的更新,新增了大量新特徵,同時也做了一些不向下兼容的修改,一起來看下。

1.棄用的功能

以下幾個功能被棄用,若在設定檔中啟用,則 PHP 會在執行時發出警告。

Register Globals
Magic Quotes
Safe Mode

2.匿名函數

f u n c = f u n c t i o n ( func=function(func=function(arg){
echo $arg;
}
$func(‘hello’);

3.新增了魔術方法__invoke(),__callStatic();

随着匿名函数的加入,PHP 引入了一个新的魔术方法 __invoke().
该魔术方法会在将一个对象作为函数调用时被调用:
class A
{
    public function __invoke($str)
    {
        print "A::__invoke(): {$str}";
    }
}

$a = new A;
$a("Hello World");
输出毫无疑问是:  A::__invoke(): Hello World

__callStatic() 则会在调用一个不存在的静态方法时被调用。

4.命名空間,但不完整,只支援類別

5.後期靜態綁定

6.Heredoc 和Nowdoc

對Heredoc 以及Nowdoc 進行了一些改進,它們都用於在PHP 程式碼中嵌入大段字串。

7.用 const 定義常數

PHP5.3 起同時支援在全域命名空間和類別中使用 const 定義常數。

旧式风格:
define("XOOO", "Value");
新式风格:

const XXOO = "Value";
const 形式仅适用于常量,不适用于运行时才能求值的表达式:
// 正确
const XXOO = 1234;
// 错误
const XXOO = 2 * 617;
(在5.6版后可以了)

8.三元運算子簡寫形式

舊式風格:

echo $a ? $a : “No Value”;

可簡寫成:

echo $a ?: “No Value”;

即若省略三元運算子的第二個部分,會預設用第一個部分代替。

9.Phar

Phar即PHP Archive, 起初只是Pear中的一個函式庫而已,後來在PHP5.3被重新寫成C擴充並內建到 PHP 中。

Phar用來將多個 .php 腳本打包(也可以打包其他檔案)成一個 .phar 的壓縮檔案(通常是ZIP格式)。

目的在於模仿 Java 的 .jar, 不對,目的是為了讓發布PHP應用程式更加方便。同時也提供了數位簽章驗證等功能。

.phar 檔案可以像.php 檔案一樣,被PHP引擎解釋執行,同時你也可以寫出這樣的程式碼來包含(require) .phar 中的程式碼:

require(“xxoo.phar”);
require(“phar://xxoo.phar/xo/ox.php”);

推薦學習:php培訓

以上是php5.2和5.3有什麼差別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn