php 中使用面向對象編程通過“類”和“對象”組織代碼,提升程序結(jié)構(gòu)清晰度與維護(hù)性。類是模板,定義屬性和方法;對象是類的實例。例如 user 類包含姓名、年齡屬性及登錄、注冊方法。創(chuàng)建對象用 new 關(guān)鍵字,如 $user1 = new user()。類可含構(gòu)造函數(shù)初始化數(shù)據(jù)。實用技巧包括:1. 封裝保護(hù)數(shù)據(jù),用 private 屬性配合 getter 和 setter 方法;2. 繼承復(fù)用代碼,子類繼承父類行為;3. 靜態(tài)方法和屬性無需實例化即可調(diào)用,如靜態(tài) connect 方法連接數(shù)據(jù)庫。掌握基礎(chǔ)后可逐步學(xué)習(xí)接口、抽象類等高級特性。
在 PHP 中使用面向?qū)ο?/b>編程(OOP),其實就是通過“類”和“對象”來組織代碼,讓程序結(jié)構(gòu)更清晰、邏輯更易維護(hù)。相比傳統(tǒng)的過程式寫法,OOP 更適合中大型項目開發(fā)。
什么是類和對象?
類可以理解為一個模板或藍(lán)圖,它定義了某一類事物的屬性(變量)和行為(方法)。而對象是根據(jù)這個類創(chuàng)建出來的具體實例。
比如你可以定義一個 User 類,里面有姓名、年齡這些屬性,還有登錄、注冊這些方法。然后你就可以用這個類創(chuàng)建出多個用戶對象,每個對象都有自己的數(shù)據(jù)。
立即學(xué)習(xí)“PHP免費學(xué)習(xí)筆記(深入)”;
上面這個例子中,User 是類,當(dāng)你這樣寫:
$user1 = new User(); $user1->name = '張三'; $user1->login(); // 輸出:張三 登錄成功
這時候 $user1 就是一個對象。
如何定義類和創(chuàng)建對象?
PHP 中使用 class 關(guān)鍵字來定義類,類名通常以大寫字母開頭。類里面包含屬性和方法。
屬性前面可以用 public、private、protected 來控制訪問權(quán)限。最常用的是 public,表示誰都可以訪問。
創(chuàng)建對象使用 new 關(guān)鍵字,例如:
$car = new Car();
如果你的類有構(gòu)造函數(shù)(__construct),可以在創(chuàng)建對象時傳參數(shù)進(jìn)去初始化數(shù)據(jù):
class Car { public $brand; public function __construct($brand) { $this->brand = $brand; } } $bmw = new Car('BMW'); echo $bmw->brand; // 輸出 BMW
面向?qū)ο蟮囊恍嵱眉记?/h3>
1. 使用封裝保護(hù)數(shù)據(jù)
把不想被外部直接修改的屬性設(shè)為 private,然后提供 getter 和 setter 方法來操作它們。這樣可以避免數(shù)據(jù)被隨意更改。
class Person { private $age; public function setAge($age) { if ($age > 0 && $age < 150) { $this->age = $age; } } public function getAge() { return $this->age; } }
2. 繼承復(fù)用代碼
如果多個類之間有共同的行為,可以使用繼承。比如定義一個 Animal 類,然后 Dog 類繼承它:
class Animal { public function eat() { echo '吃東西'; } } class Dog extends Animal { public function bark() { echo '汪汪叫'; } } $dog = new Dog(); $dog->eat(); // 可以調(diào)用父類的方法
3. 靜態(tài)方法和屬性
有些時候不需要創(chuàng)建對象就能調(diào)用方法或?qū)傩裕@時候可以用 Static。
比如數(shù)據(jù)庫連接類里常用靜態(tài)方法獲取連接:
class DB { public static function connect() { echo '連接數(shù)據(jù)庫'; } } DB::connect(); // 不需要 new 對象
基本上就這些。掌握類和對象的基礎(chǔ)之后,再慢慢學(xué)接口、抽象類、命名空間等高級用法也不遲。其實剛開始不用太復(fù)雜,先把類的設(shè)計想清楚,合理劃分職責(zé),就已經(jīng)能寫出不錯的 OOP 代碼了。