0

クラス関数内で定数を定義する方法はありますか?
例:

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


上記のサンプルコードは明らかに機能しません!

私のプログラミングの知識から、定数を再定義することはできません。そうしないと、定数になります。しかし、関数内でコストをどのように定義しますか?!私の例では、その関数はコンストラクターですか、それともこれは完全に不可能ですか?

4

2 に答える 2

7

定数ではなく静的プロパティが必要だったと思います

public static $form = true;

ただし、変数名は定数ではないため、他の開発者を混乱させないように、大文字で入力しないでください。

あなたはあなたがあなたの方法でしたようにそれをアクセスすることができますself::form

于 2013-03-25T17:10:50.523 に答える
5

プロパティに保存する。静的プロパティではなく、ゲッターとセッターを備えたプロパティです。

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

次に、で呼び出すことでフォームの色を取得できます$example_app->getFormColor();

于 2013-03-25T17:17:01.957 に答える