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

PHP 類常量完整指南:定義、訪問、繼承與動態調用

     編輯:PHP 綜合知識

類常量基礎特性

  • 屬於類本身,不屬於實例對象
  • 不可使用 `public`/`protected`/`private`/`static` 修飾
  • 值必須為標量或常量表達式(PHP 5.6+ 支援陣列)
  • 子類可覆蓋父類常量,可通過 `parent::` 訪問父類值

定義與基本訪問

class Foo {
    const BAR = 'bar';
    
    public static function getConstantValue() {
        return self::BAR;  // 類內部訪問
    }
    
    public function getConstant() {
        return self::BAR;
    }
}

// 多種訪問方式均輸出 "bar"
echo Foo::BAR;           // 類名訪問
$foo = 'Foo';
echo $foo::BAR;          // 變量動態訪問 (PHP 5.3+)
$obj = new Foo();
echo $obj->getConstant();       // 實例方法訪問
echo $obj->getConstantValue();  // 靜態方法訪問
echo Foo::getConstantValue();

繼承與覆蓋機制

class Bar extends Foo {
    const BAR = 'foo';  // 覆蓋父類常量
    
    public static function getMyConstant() {
        return self::BAR;     // 當前類常量 -> "foo"
    }
    
    public static function getParentConstant() {
        return parent::BAR;   // 父類常量 -> "bar"
    }
}

echo Bar::getMyConstant();      // foo
echo Bar::getParentConstant();  // bar

進階用法:動態類名調用

$className = 'Foo';
echo $className::BAR;  // 合法

// ⚠️ 變量值不能為關鍵字
$invalid = 'self';
// $invalid::BAR; // 錯誤:不能使用 self、parent、static 作為動態類名

常見誤區與最佳實踐

誤區正確做法
嘗試用 `$obj::CONST` 訪問使用 `self::CONST` 或 `ClassName::CONST`
在介面中定義非常量介面只能定義常量,不能有屬性
常量值使用變量PHP 5.6+ 可用常量表達式:`const B = A + 1;`

總結

類常量提供了類級別的不可變值儲存,配合晚期靜態綁定(`static::`)可實現多態常量行為。合理使用能提高代碼可讀性與維護性。

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