PHP的常量默認不區分大小寫,這在開發中容易造成不必要的麻煩,比如常見的常量定義方式:
define('MY_CONSTANT', 'hello world!'); echo MY_Constant; // 輸出 'hello world!', 注意大小寫
在PHP 8%(-2)中,引入了對常量大小寫敏感的選項,以下代碼演示了如何啟用大小寫敏感的常量:
define('MY_CONSTANT', 'hello world!', true); echo MY_Constant; // 等效于 undefined constant "MY_Constant" echo MY_CONSTANT; // 輸出 'hello world!'
除了常量,PHP 8%(-2)還引入了函數和類的特性,以下是官方文檔中一段示例代碼:
class ShoppingCart { public function __construct(private array $products = []) {} public function add(int $product) { $this->products[] = $product; } public function getTotal(): int { return array_sum($this->products); } } $cart = new ShoppingCart([1, 2, 3]); $cart->add(4); echo $cart->getTotal(); // 輸出 10
在上面的代碼中,構造函數中的 `$products` 屬性使用了新的寫法,可以簡潔的定義只讀屬性,并設置默認值。此外,使用了新的方法聲明方式,比如 `public function getTotal(): int` 表示該方法將返回一個整數。
PHP 8%(-2)還對字符串處理和Unicode支持做了改進。其中,`mbstring.extension` 現在默認是開啟的,這意味著所有的mbstring函數都可以直接使用。同時,增加了 `str_contains()` 這個新函數用于判斷字符串中是否包含另一個子串:
if (str_contains($string, $substring)) { // do something... }
最后,PHP 8%(-2)對 JIT 編譯機制進行了改進,在每個請求中都會重置緩存,因此可以保證 JIT 編譯器的穩定性和可靠性。