PHP 5 完全重寫對象模型,引入訪問控制、抽象類、接口、魔術方法、類型約束等特性,奠定了現代 PHP 面向對象編程基礎。本文系統梳理類定義、屬性/常量聲明、自動加載、對象引用語義等核心知識點,附帶可運行代碼示例。
<?php
class User {
// 屬性聲明
public $name = 'Tom';
protected $email;
private $password;
// 常量
const STATUS_ACTIVE = 1;
const STATUS_INACTIVE = 0;
// 構造函數
public function __construct($name, $email) {
$this->name = $name;
$this->email = $email;
}
// 方法
public function getName() {
return $this->name;
}
}
// 實例化
$user = new User('Jerry', 'jerry@example.com');
echo $user->getName(); // Jerry
echo User::STATUS_ACTIVE; // 1
| 關鍵字 | 訪問範圍 | 說明 |
|---|---|---|
public | 任意位置 | 完全公開 |
protected | 類內部、子類、父類 | 繼承體系可見 |
private | 僅定義該屬性的類 | 封裝核心,子類不可見 |
| 方法 | 觸發時機 | 典型用途 |
|---|---|---|
__construct | 實例化 | 初始化 |
__destruct | 對象銷毀 | 資源釋放 |
__call | 調用不可訪問方法 | 代理、動態方法 |
__callStatic | 靜態不可訪問方法 | 靜態代理 |
__get/set/isset/unset | 不可訪問屬性讀寫 | 屬性代理、虛擬屬性 |
__sleep/wakeup | serialize/unserialize | 序列化控制 |
__toString | 對象作字符串使用 | 調試輸出 |
__invoke | 對象作函數調用 | 可調用對象 |
__clone | clone 操作 | 深拷貝邏輯 |
__debugInfo | var_dump 輸出 | 自定義調試信息 |
abstract,強制子類實現final,禁止繼承/覆蓋interface,定義契約,支援多實現trait,代碼復用單元,解決單繼承限制new class() {},一次性對象目錄結構:
project/ ├── index.php ├── Name.php └── User.php
// index.php
<?php
header("Content-Type: text/html; charset=utf-8");
function __autoload($className) {
require_once $className . '.php';
}
$obj = new Name();
$obj2 = new User();
var_dump($obj->getName());
var_dump($obj2->getUser());
?>
// Name.php
<?php
class Name {
public function getName() { return "歐陽俊"; }
}
// User.php
<?php
class User {
public function getUser() { return ['ouyangjun', 'jpp']; }
}
掌握 PHP 面向對象核心機制,是編寫可維護、可擴展、現代化 PHP 代碼的基石。建議配合 PSR-1/4/12 規範、Composer 自動加載、PHPStan 靜態分析工具,構建專業級代碼庫。