建立和獲取 PHP 類常量

Habdul Hazeez 2023年1月30日 2022年5月13日
  1. 在 PHP 中使用 const 關鍵字建立類常量
  2. 在 PHP 中使用訪問修飾符建立常量
  3. 在 PHP 中使用 final 關鍵字建立常量
  4. 在 PHP 中使用靜態變數模擬常量
建立和獲取 PHP 類常量

本教程將檢視多個程式碼示例,這些示例將教你如何建立 PHP 類常量:const 關鍵字訪問修飾符final 關鍵字。你還將學習如何使用靜態變數模擬常量。

在 PHP 中使用 const 關鍵字建立類常量

PHP 有 const 關鍵字。你可以使用此關鍵字來建立常量。

建立後,你可以通過範圍解析運算子 :: 訪問常量。

在我們的下一個示例中,我們定義了一個類。

在這個類中,我們有一個常量。此外,函式通過範圍解析運算子訪問此常量。

我們可以使用 Scope Resolution Operator 從類名中直接訪問它以顯示常量。

<?php
    class ClassWithConstant {
        const CLASSCONSTANT = 23;

        function show_constant() {
            echo  self::CLASSCONSTANT. "\n";
        }
    }

    echo ClassWithConstant::CLASSCONSTANT;
?>

輸出:

23

此外,你可以建立一個新物件。該物件可以通過兩種方式顯示常量。

  • 呼叫 show_constant 函式來顯示常量。
  • 通過範圍解析運算子 :: 顯示常量。

你將在下一個程式碼塊中找到這兩個選項。

<?php
    class ClassWithConstant {
        const CLASSCONSTANT = 23;

        function show_constant() {
            echo  self::CLASSCONSTANT. "\n";
        }
    }

    $new_object = new ClassWithConstant();

    // Call the inner function
    // to reveal the constant
    $new_object->show_constant();

    // Or, access the constant via scope
    // resolution
    echo $new_object::CLASSCONSTANT;
?>

輸出:

23
23

最後一個選項是將類名分配給字串變數,然後通過範圍解析訪問常量。

<?php
class ClassWithConstant {
    const CLASSCONSTANT = 23;

    function show_constant() {
        echo  self::CLASSCONSTANT. "\n";
    }
}

$class_name = "ClassWithConstant";
echo $class_name::CLASSCONSTANT. "\n";

輸出:

23

在 PHP 中使用訪問修飾符建立常量

PHP 的訪問修飾符是 publicprivateprotected。從 PHP 7.1 開始,你可以使用這些訪問修飾符建立常量。

此外,任何使用 private 修飾符宣告的常量都不能在該類之外訪問。

我們的下一個程式碼示例定義了兩個帶有 publicprivate 訪問修飾符的常量。我們可以通過 Scope Resolution Operator 訪問公共常量。

任何訪問私有常量的嘗試都會導致致命錯誤。

<?php
    class ClassWithConst {

        // As of PHP 7.1.0
        public const PUBLICCONSTANT = 'Public Constant';
        private const PRIVATECONSTANT = 'Private Constant';

    }

    echo ClassWithConst::PUBLICCONSTANT . "\n";
?>

輸出:

Public Constant

在 PHP 中使用 final 關鍵字建立常量

使用 final 關鍵字,你可以模擬公共常量。由於 final 關鍵字,類範圍將限制此常量,謝謝。

此外,你可以在類宣告之前編寫 final 關鍵字。通過這樣做,final 關鍵字將阻止繼承。

下一個程式碼展示瞭如何使用 final 關鍵字建立常量。首先,在第一個類定義之前有一個 final 關鍵字。

然後,一個函式呼叫第二個類定義中的類定義。反過來又返回常數。

<?php
	final class ClassWithConstants {

	    public function getConstant()
	    {
	        return 'CONSTANT VALUE';
	    }
	}

	class CallClassConstant {

	    static public function ReturnClassConstant()
	    {
	        return new ClassWithConstants();
	    }
	}


	$constant_value = CallClassConstant::ReturnClassConstant()->getConstant();

	echo $constant_value;
?>

輸出:

CONSTANT VALUE

在 PHP 中使用靜態變數模擬常量

顧名思義,靜態變數並不意味著改變。因此,一旦分配,你將無法更改它們。

這就像常量的行為,因為一旦為它們分配值,你就會希望它們保持不變。

在下面的程式碼示例中,有一個類定義。此類有一個靜態變數設定為 null

此外,它還有一個訪問修飾符,可以防止外部訪問。在類中,我們有一個函式,它在分配後返回靜態變數。

此函式將忽略任何重新分配靜態變數的進一步嘗試。因此,它將始終返回第一個分配的值。

<?php
    class ClassWithStaticVars {
        private static $static_variable = null;

        public static function returnStaticVariable($static_value = null)
        {
            if (
                (is_null(self::$static_variable) === true)
                && (isset($static_value) === true)
            ) {
                self::$static_variable = $static_value;
            }

            return self::$static_variable . "\n";
        }
    }

    echo ClassWithStaticVars::returnStaticVariable();
    echo ClassWithStaticVars::returnStaticVariable(200);
    echo ClassWithStaticVars::returnStaticVariable("Hello");
    echo ClassWithStaticVars::returnStaticVariable();
?>

輸出:

200
200
200
Habdul Hazeez avatar Habdul Hazeez avatar

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.

LinkedIn