一個完整的 PHP 類別通常包含以下七種成員,各有不同用途與存取規則:
$this$this__construct(),實例化時自動呼叫__destruct(),物件銷毀時自動呼叫<?php
class Student {
// 類別常數(無存取修飾詞)
const STUDENT = 'Tom';
// 公開屬性
public $stu_name;
// 靜態屬性
public static $stu_num = 1;
// 一般方法
public function stuFunction() {
echo 'non_static_function', '<br />';
}
// 靜態方法
public static function static_stuFunction() {
echo 'static_function', '<br />';
}
// 建構函數
public function __construct($stu_name) {
$this->stu_name = $stu_name;
echo '__construct', '<br />';
}
// 解構函數
public function __destruct() {
echo '__destruct', '<br />';
}
}
// 實例化
$object = new Student('Tom');
// 物件存取屬性與靜態屬性
echo $object->stu_name, '<br />';
echo $object::$stu_num, '<br />';
// 類別存取靜態屬性
echo Student::$stu_num, '<br />';
// 物件呼叫方法與靜態方法
$object->stuFunction();
$object->static_stuFunction();
$object::stuFunction(); // 靜態呼叫一般方法(PHP 允許但不推薦)
$object::static_stuFunction();
// 類別呼叫方法與靜態方法
Student::stuFunction(); // 同上
Student::static_stuFunction();
// 類別呼叫常數
echo Student::STUDENT, '<br />';
?>
| 呼叫者 | 屬性 | 靜態屬性 | 方法 | 靜態方法 | 常數 |
|---|---|---|---|---|---|
| 物件($obj) | ✓ | ✓ | ✓ | ✓ | ✗ |
| 類別(Class) | ✗ | ✓ | ✓* | ✓ | ✓ |
* 類別呼叫非靜態方法雖語法合法,但內部不可使用 $this,屬不推薦用法。
private 或 protected,透過 Getter/Setter 存取MAX_RETRY)