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

PHP 類完整語法指南:七大核心成員與訪問控制實戰圖解

     編輯:PHP 相關知識

PHP 類完整語法指南:七大核心成員與訪問控制實戰圖解

PHP 類包含七種核心語法成員,掌握它們的定義、訪問修飾符、調用方式與繼承規則,是面向對象開發的基石。本文以 Student 類為例,系統梳理屬性、靜態屬性、方法、靜態方法、類常量、構造函數、析構函數的完整語法與訪問矩陣。

七大成員速覽表

成員類型關鍵字訪問修飾符屬於調用方式
類常量const無 (隱含 public)類ClassName::CONST
實例屬性public/protected/private三種皆可對象$obj->prop
靜態屬性static + 修飾符三種皆可類/對象ClassName::$prop / $obj::$prop
實例方法function + 修飾符三種皆可對象$obj->method()
靜態方法static function + 修飾符三種皆可類/對象ClassName::method() / $obj::method()
構造函數__construct通常 public對象創建時自動調用new ClassName()
析構函數__destruct通常 public對象銷毀時自動調用自動 / unset($obj)

完整代碼演示

<?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'); // 輸出 __construct

// 對象調用實例屬性
echo $object->stu_name . '<br />'; // Tom

// 對象調用靜態屬性 (PHP 5.3+)
echo $object::$stu_num . '<br />'; // 1

// 類調用靜態屬性 (推薦)
echo Student::$stu_num . '<br />'; // 1

// 對象調用實例方法
$object->stuFunction(); // non_static_function

// 對象調用靜態方法
$object->static_stuFunction(); // static_function
$object::static_stuFunction(); // static_function (語法糖)

// 類調用靜態方法 (推薦)
Student::static_stuFunction(); // static_function
Student::stuFunction(); // 非靜態方法靜態調用:嚴格模式下報錯,非嚴格下 $this 為 null

// 類調用類常量
echo Student::STUDENT . '<br />'; // Tom
?>

訪問控制矩陣 (public / protected / private)

調用位置publicprotectedprivate
類內部✅✅✅
子類內部✅✅❌
外部代碼 (實例)✅❌❌
外部代碼 (類名::靜態)✅❌❌

關鍵規則總結

  1. 對象可訪問實例屬性/方法 + 靜態屬性/方法;類只能訪問靜態屬性/方法 + 常量。
  2. 靜態方法內不可用 $this,只能訪問靜態成員。
  3. 非靜態方法靜態調用 (如 Student::stuFunction()):PHP 7 移除 E_DEPRECATED,PHP 8 拋出 Error,嚴禁使用。
  4. 構造/析構函數:通常 public;單例模式構造函數設為 private。
  5. 屬性類型聲明 (PHP 7.4+):public string $name; 增強 IDE 提示與運行時檢查。

繼承與靜態綁定陷阱

<?php
class A {
    public static $name = 'A';
    public static function who() { echo self::$name; } // 編譯期綁定 A
    public static function whoLate() { echo static::$name; } // 運行期綁定 (晚期靜態綁定)
}
class B extends A {
    public static $name = 'B';
}
A::who();      // A
B::who();      // A (self 綁定父類)
A::whoLate();  // A
B::whoLate();  // B (static 綁定調用類)
?>

掌握七大成員語法、訪問控制與靜態綁定規則,能寫出結構清晰、封裝良好、可維護的 PHP 面向對象代碼。

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