1

私は次のようないくつかの静的プロパティを持つPHPクラスを持っています:

static public $_TYPE_DESIGN_DRAFT = 'design_draft';
static public $_TYPE_STORYTELLING_DRAFT = 'storytelling_draft';
static public $_TYPE_OTHER = 'other';
static public $_TYPE_DATA_FILE = 'data_file';

static public $_ALLOWED_EXTENSIONS = array(       // on the next line it breaks
                self::$_TYPE_DESIGN_DRAFT => array("jpeg", "jpg", "png", "gif", "pdf", "txt", "rtf", "doc", "csv"),
                self::$_TYPE_STORYTELLING_DRAFT => array("jpeg", "jpg", "png", "gif", "pdf", "txt", "rtf", "doc", "csv"),
                self::$_TYPE_OTHER => array("jpeg", "jpg", "png", "gif", "pdf", "txt", "rtf", "doc", "csv"),
                self::$_TYPE_DATA_FILE => array("pdf", "txt", "rtf", "doc", "csv", "xls")
);

しかし、PHPでは、キーの値を同じクラスの静的プロパティとしてそのような配列を定義することはできないようです。

$_ALLOWED_EXTENSIONS回避策は、クラスのコンストラクターでvarを定義することだけですがstatic、静的な場合、コンストラクターが呼び出されないため、定義できません。

これに対する効果的な回避策はありますか?

4

1 に答える 1

3

このようなクラスプロパティは使用できません。

私のコメントに続いて; あなたはこのようなことをすることができませんか?

class Test
{
    static public $_TYPE_DESIGN_DRAFT = 'design_draft';
    static public $_TYPE_STORYTELLING_DRAFT = 'storytelling_draft';
    static public $_TYPE_OTHER = 'other';
    static public $_TYPE_DATA_FILE = 'data_file';

    static public $_ALLOWED_EXTENSIONS = array();

    public static function init()
    {
        self::$_ALLOWED_EXTENSIONS = array(
            self::$_TYPE_DESIGN_DRAFT => array("jpeg", "jpg", "png", "gif", "pdf", "txt", "rtf", "doc", "csv"),
            self::$_TYPE_STORYTELLING_DRAFT => array("jpeg", "jpg", "png", "gif", "pdf", "txt", "rtf", "doc", "csv"),
            self::$_TYPE_OTHER => array("jpeg", "jpg", "png", "gif", "pdf", "txt", "rtf", "doc", "csv"),
            self::$_TYPE_DATA_FILE => array("pdf", "txt", "rtf", "doc", "csv", "xls")       
        );      
    }
}

Test::init();
print_r(Test::$_ALLOWED_EXTENSIONS);
于 2012-08-29T12:45:22.450 に答える