簡體   English   中英

php類常量可見性

[英]php class constant visibility

我們可以設置類常量的可見性嗎?
對於這個例子:

class MyClass {
    const CONST_VALUE = 'A constant value';
}

我們可以指定嗎?

public const CONST_VALUE = 'A constant value';

要么

private const CONST_VALUE = 'A constant value';

要么

protected const CONST_VALUE = 'A constant value';

更新:常量的可見性修飾符已添加到PHP 7.1(2016年12月1日發布)中。 請參閱RFC: 支持類常量可見性

語法如下所示:

class ClassName {
    private const PRIVATE_CONST = 0;
    protected const PROTECTED_CONST = 0;
    public const PUBLIC_CONST = 0;
}

PHP7.1開始 ,允許修飾符用於類常量,在以前的版本中,不可能在類中設置常量的可見性。 他們總是公開的。 有關詳細信息,請參閱http://www.php.net/manual/en/language.oop5.constants.php上的注釋。

另一種方法是使用常數方法,例如

private static function gravitationalConstant() {
    return 9.81;
}

引自福勒的重構書

這個成語對於基於C的程序員來說不那么熟悉,但對於Smalltalkers(他們的語言中沒有常量)非常熟悉。 總的來說,我不傾向於在Java中使用它,因為它不太習慣於語言。 但是,如果需要使用計算值替換簡單返回,則值得將常量字段更改為常量方法。 (我想應該有重構......)

在PHP最新版本(PHP 7.1.0)中它將可用。

樣本語法就像。

class Token {
    // Constants default to public
    const PUBLIC_CONST = 0;

        // Constants then also can have a defined visibility
        private const PRIVATE_CONST = 0;
        protected const PROTECTED_CONST = 0;
        public const PUBLIC_CONST_TWO = 0;

        //Constants can only have one visibility declaration list
        private const FOO = 1, BAR = 2;
}

請參閱以下鏈接。 https://wiki.php.net/rfc/class_const_visibility

現在可以在PHP 7.1發布Alpha今天添加Class常量可見性修飾符

在Php 7.1.0中是可能的。 請訪問PHP RFC:支持類常量可見性

php中的常量不允許使用修飾符。 您可以使用

public static $variable = "abc";

但遺憾的是, final不允許在這里舉行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM