2017-01-06 5 views
0

私は以下のコードを持っています。Phpクラスのプロパティ取得と設定

<?php 
class Reg { 
    private $pros = array(); 
    public function __set($key,$val) { 
     $this->pros($key)= $val; 
    } 

    public function __get($key) { 
      return $this->pros($key); 
    }  
} 
$reg= new Reg; 
$reg->tst="tst"; 
echo $reg->tst; 
?> 

しかし、このスクリプトを実行すると、次のエラーが表示されます。
致命的なエラー:行5の書き込みコンテキストでメソッドの戻り値を使用できません

私は上記のように配列に要素を追加することができると信じています。

$array = array();  
$array('key')='value'; 

私が間違っていたことを明確にしてください。
ありがとう

+3

丸括弧を使用して、なぜ、 '角括弧を使用して – rahulsm

+0

'ます$ this->賛否[$キー]をご確認ください – bansi

答えて

0

これは、関数の戻り値を設定しようとしているためです。 $this->pros($key)は、pros($key)関数を呼び出すことを意味します。値を$pros配列に設定しないでください。

構文が間違っています。 arrayに値を設定すること -

$array['index'] = 'value'; 

変更

$this->pros($key)= $val; - >$this->pros[$key]= $val;

return $this->pros[$key]; 

Working code

0
$this->pros[$key] = $value; 

OR

$keys = array($key); 
$this->pros = array_fill_keys($keys,$value); 

array_fill_keys()関数は、キーを指定する値を持つ配列を埋めます。

構文:

array_fill_keys(keys,value); 
関連する問題