在函数中定义PHP类常量

tfo*_*ont 0 php oop

有没有办法在类函数中定义常量?
例:

class ExampleApp
{
    const FORM = TRUE;

    public function __construct()
    {
        switch(Base::color())
        {
            case 'green':
                self::FORM = 'G';
                break;
            case 'red':
                self::FORM = 'R';
                break;
            default:
                self::FORM = 'W';
                break;
        }
    }

    public function process() { return TRUE; }
}
Run Code Online (Sandbox Code Playgroud)


上面的示例代码显然不起作用!

根据我的编程知识,你不能重新定义常量,否则它们将是"常量".但是如何在函数中定义一个costant呢?!在我的例子中,函数是构造函数,还是完全不可能?

Mar*_*o D 7

我想你想要一个静态属性,而不是常量

public static $form = true;

但是,不要将变量名称放在大写字母中,因为它不是常量,不要混淆其他开发人员.

您可以像在方法中一样使用它来获取它 self::form

  • 访问“静态”属性时,必须包含美元符号。访问`$ form`属性的正确方法是`self :: $ form`。 (2认同)

Hay*_*den 5

通过将其保存在财产中.不是静态属性,只是具有getter和setter的属性.

class ExampleApp
{
    const FORM_COLOR_GREEN = "G";
    const FORM_COLOR_RED = "R";
    const FORM_COLOR_DEFAULT = "W";

    private $form_color;

    public function getFormColor()
    {
        return $this->form_color;

    }

    public function setFormColor( $color )
    {
        $this->form_color = $color;

    }

    public function __construct( $color = NULL )
    {
        switch( $color )
        {
            case 'green':
                $this->setFormColor( self::FORM_COLOR_GREEN );
                break;
            case 'red':
                $this->setFormColor( self::FORM_COLOR_RED );
                break;
            default:
                $this->setFormColor( self::FORM_COLOR_DEFAULT );
                break;
        }
    }

    public function process() { return TRUE; }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以通过调用它获得表单颜色 $example_app->getFormColor();