首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 類別入門指南:從屬性、方法到實例化的完整觀念建立

     編輯:PHP 相關知識

什麼是類別?

類別是物件的藍圖,封裝了屬性(資料)與方法(行為)。實例化後得到「物件」,每個物件擁有獨立的屬性值,共享相同的方法定義。

最小可行類別

<?php
class MyClass {}  // 合法但無功能

定義屬性

class MyClass {
    public $username = '深空';  // 預設值
    public $email;              // 無預設值
}
  • public:類別內外皆可存取
  • protected:類別內與子類別可存取
  • private:僅類別內部可存取

定義方法

class MyClass {
    public $username = '深空';

    public function greet() {
        return "Hello, {$this->username}!";
    }

    public function setUsername($name) {
        $this->username = $name;
    }
}

$this 代表「當前物件實例」,唯有透過它存取屬性與呼叫其他方法。

實例化與使用

$obj1 = new MyClass();
$obj2 = new MyClass();

$obj1->setUsername('Alice');
$obj2->setUsername('Bob');

echo $obj1->greet(); // Hello, Alice!
echo $obj2->greet(); // Hello, Bob!

兩個物件互不干擾,各自維護 $username 狀態。

建構子與解構子

class User {
    public $name;

    public function __construct($name) {
        $this->name = $name;
        echo "User {$name} created.\n";
    }

    public function __destruct() {
        echo "User {$this->name} destroyed.\n";
    }
}

$user = new User('Charlie'); // 自動呼叫 __construct
// 腳本結束或 unset($user) 時呼叫 __destruct

靜態成員

class Counter {
    public static $count = 0;

    public static function increment() {
        self::$count++;
    }
}

Counter::increment();
echo Counter::$count; // 1(不需實例化)
  • self:: 呼叫靜態成員
  • static:: 延遲靜態綁定(繼承時指向實際被呼叫的類別)

繼承與多型基礎

class Animal {
    public function speak() { echo "Some sound\n"; }
}

class Dog extends Animal {
    public function speak() { echo "Woof!\n"; } // 覆寫
}

$animals = [new Animal(), new Dog()];
foreach ($animals as $a) { $a->speak(); } // 多型:同樣呼叫,不同行為

新手常見誤區

  1. 忘記 $this:$username vs $this->username
  2. 把類別當函數庫:類別應封裝「狀態+行為」,純工具函數用 static 或獨立函數
  3. 過度設計:簡單腳本不必強迫 OOP,PHP 支援混合範式

進階學習路徑

介面 interface → 抽象類別 abstract class → Trait 程式碼複用 → 設計模式 → 依賴注入容器

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved