创建和获取 PHP 类常量

Habdul Hazeez 2023年1月30日
  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
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