2

たとえば、クラスにこれがあります:

private $messages = array( 
    'name'=>        '<aa_f>name',
    'PASS' =>       '<aa_p>'
);

<aa_p>しかし、私はこのような変数を作りたい:

private $pass = '<aa_p>';

私はこれらの4つの方法を試しましたが、どれもうまくいきません。PHP.net には、これを行う例がありませんでした。

    'PASS' =>       $this->pass
    'PASS' =>       $pass
    'PASS' =>       '$this->pass'
    'PASS' =>       '$pass'

完全なコード

<?php
class Message
{
    private $PASS = '<aa_p>';
    private $FAIL = '<aa_f>';

    private $messages = array( 
        'name'=>        '<aa_f>name',
        'email' =>      '<aa_f>email_s', 
        'pass' =>       '<aa_f>pass',
        'url' =>        '<aa_f>url',
        'title' =>      '<aa_f>title',
        'tweet'=>       '<aa_f>tweet',
        'empty' =>      '<aa_f>empty', 
        'same' =>       '<aa_f>same',  
        'taken' =>      '<aa_f>taken', 
        'validate' =>   '<aa_f>validate',
        'PASS' =>       '<aa_p>'
    );
    public function __construct()
    {
    }
    public function display($type)
    {
        echo $this->messages[$type];
    }
    public function get($type)
    {
        return $this->messages[$type];
    }
}

更新:回答

参照用: ( 更新されたコード )

class Message
{
    private $PASS = '<aa_p';
    private $FAIL = '<aa_f>';
    private $messages = array();

    public function __construct()
    {
        $this->messages['PASS'] = $this->PASS;
        $this->messages['name'] = $this->FAIL . 'name';
        $this->messages['email'] = $this->FAIL . 'email_s';
        $this->messages['pass'] = $this->FAIL . 'pass';
        $this->messages['url'] = $this->FAIL . 'url';
        $this->messages['title'] = $this->FAIL . 'title';
        $this->messages['tweet'] = $this->FAIL . 'tweet';
        $this->messages['empty'] = $this->FAIL . 'empty';
        $this->messages['same'] = $this->FAIL . 'same';
        $this->messages['taken'] = $this->FAIL . 'taken';
        $this->messages['validate'] = $this->FAIL . 'validate';
    }
    public function display($type)
    {
        echo $this->messages[$type];
    }
    public function get($type)
    {
        return $this->messages[$type];
    }
}
4

3 に答える 3

2

あなたがこのようなものを持っていることを意味する場合:

class Test {
    private $pass = '<aa_p>';
    private $messages = array(
        'name' => '...',
        'PASS' => '...'
    );
}

'PASS'プライベート プロパティの値を設定したい場合$pass、PHP 構文では許可されていないため、定義でこれを行うことはできません。メソッドなど、式を評価できる場所でこれを行う必要があります。コンストラクターはこれに適しています。

class Test {
    private $pass = '<aa_p>';
    private $messages = array(
        'name' => '...'
    );

    public function __construct() {
        $this->messages['PASS'] = $this->pass;
    }
}
于 2012-05-15T19:26:37.797 に答える
2

コンストラクターで変数を設定する必要があります。コンストラクタの外では、他の変数を読み取ることはできません。

class Message{
    private $PASS = '<aa_p>';
    private $messages = array();

    public function __construct(){
        $this->messages['PASS'] = $this->PASS;
    }
}
于 2012-05-15T19:26:48.733 に答える
2

クラスメンバーを開始するために使用できるのは、コンパイル時に決定できる値だけです。実行時に(コンストラクターを介して)値を設定する必要があります。

class Message
{
    private $PASS = '<aa_p';
    private $FAIL = '<aa_f>';

    private $messages = array( 
        'name'=>        '<aa_f>name',
        'email' =>      '<aa_f>email_s', 
        'pass' =>       '<aa_f>pass',
        'url' =>        '<aa_f>url',
        'title' =>      '<aa_f>title',
        'tweet'=>       '<aa_f>tweet',
        'empty' =>      '<aa_f>empty', 
        'same' =>       '<aa_f>same',  
        'taken' =>      '<aa_f>taken', 
        'validate' =>   '<aa_f>validate',
        'PASS' =>       null
    );


    public function __construct()
    {
        $this->messages['PASS'] = $this->PASS;
    }

}
于 2012-05-15T19:27:24.303 に答える