define用法 - php use constant in class




PHP類常量-公共,私有還是受保護? (3)

我知道這個問題是6歲

Php 7.1(當前為RC1)允許指定類常量的可見性。

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;
}

附加信息

假設const屬性是自動公開的,我是否正確? 有沒有辦法讓它們變得私密或受到保護?

提前致謝。


php7.1開始 ,您可以使用訪問修飾符publicprivateprotected )定義類常量。 看看下面的例子:

<?php
class superheroes{
    public const kal_el = 'Superman';
    protected const bruce_wayne = 'Batman'; # works php7.1 onwards
    private const anthony_stark = 'Iron Man'; # works php7.1 onwards

    public static function show_remaining(){
        echo self::bruce_wayne, '<br />';
        echo self::anthony_stark, '<br />';
    }
}
echo superheroes::kal_el, '<br />';
superheroes::show_remaining();

致謝: http://dwellupper.io/post/48/defining-class-constants-in-phphttp://dwellupper.io/post/48/defining-class-constants-in-php


類常量應該具有私有/受保護的選項,因為公開暴露了類的內部細節,其他類/代碼可能會錯誤地使用它們認為它們可以使用,因為它們是公共的。

很高興知道更改私有常量只會影響它定義的類。不幸的是我們沒有那個選項。

回想一下當你學習對象設計和分析時...你給類方法和屬性最可能的限制訪問,然後根據需要放鬆它們(更難以回到另一個方向,因為其他類/代碼開始使用它們然後會打破其他代碼)。

替代方法

最好的辦法是創建一個私有或受保護的變量,大寫它以顯示它是一個常量。 您始終可以創建一個名為constant($ value_to_be_constant)的類,該類實現正確的魔術方法/ spl接口以防止其被更改。







const