在建構大型系統時,我們需要依據角色賦予不同權限。PHP 的繼承機制允許子類別沿用父類別的屬性與方法,並可擴充專屬功能。本文透過「使用者」與「管理員」的經典案例,淺顯說明繼承的核心概念與實作技巧。
定義基礎 User 類別,再由 Admin 繼承並新增管理功能:
/* 一般使用者類別 */
class User {
private $name;
public function __construct($attribs) {
$this->name = $attribs['name'];
}
public function getName() {
return $this->name;
}
}
/* 管理員繼承自 User,擁有額外權限 */
class Admin extends User {
public function getAdmin() {
return 'Administrator';
}
}
/* 實例化測試 */
$kirupa = new Admin(['name' => 'Kirupa']);
echo $kirupa->getName() . '<br />'; // 輸出:Kirupa
echo $kirupa->getAdmin(); // 輸出:Administrator
$regular = new User(['name' => 'Regular']);
$regular->getAdmin(); // 錯誤:User 沒有 getAdmin() 方法
實務上可繼續在 Admin 中加入業務邏輯:
class Admin extends User {
public function banUser($id) {
/* 封鎖用戶的實作代碼 */
}
public function unbanUser($id) {
/* 解封用戶的實作代碼 */
}
// 更多管理功能...
}
public 與 protected 成員。進階學習建議參考《PHP 5: Objects, Patterns, and Practice》(Matt Zandstra 著)與 PHP 官方 OOP 文件。