基於 PHP 5 開發版本撰寫,最終發布版可能有細微差異;部分示例為對比 PHP 4 故保留舊寫法。
<?php
class A { public $v = 1; }
$a = new A();
$b = $a; // PHP 4: 複製對象;PHP 5: 引用同一對象
$b->v = 2;
echo $a->v; // PHP 4: 1 PHP 5: 2
?>
&。clone 關鍵字顯式淺拷貝,__clone() 可深拷貝。__construct(),解構器 __destruct()。public/protected/private、static、final、abstract、interface、implements。<?php
try {
$db = new PDO('mysql:host=localhost;dbname=test', 'root', '');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $db->query('SELECT * FROM not_exist');
} catch (PDOException $e) {
error_log($e->getMessage());
die('Database error');
}
?>
try/catch/finally 結構(PHP 5.5+ 支持 finally)。Exception 子類,統一錯誤處理流程。Exception,攜帶上下文信息。<?php
namespace MyProject\Database;
class Connection { /* ... */ }
function connect() { /* ... */ }
const VERSION = '1.0';
// 使用
use MyProject\Database\Connection as DBConn;
$conn = new DBConn();
?>
use 導入別名,__NAMESPACE__ 魔術常量獲取當前空間。\,如 \DateTime。這三大特性奠定了 PHP 5 現代化基礎,使大型框架(Symfony、Zend Framework、Laravel 前身)得以誕生,推動 PHP 邁向企業級開發舞臺。