[print_rに関する奇妙な現象]
class ColumnVo extends Vo{
public $column_id;
public $column_name = array('label'=>'列名','value'=>' 笑');
.................
}
------------- -- ----------------------------
if($property=='column_name'){
print_r($ this ->$property['value']);
echo '
';
echo 'フォーム値は: '.$value.'
';
$this->$property['value'] = $value;
print_r($this->$property['value']);
echo
';
print_r($this->$property);
}
------出力----------- - ---------
未定義のプロパティ: ColumnVoMysql エラー
フォーム値: cccccccc
cccccccc
配列 ( [ラベル] => 列名 [値] ='haha' > ;)
------------------------------------------ -
出力の 2 行目は、値が割り当てられたことを示しています。 ただし、配列を出力する場合は、VO の元の値のみが出力されます。 [type] => string これは、VO の元のハードコーディングされた値です。
要約: print_r は読み込みが少し遅く、私は print_r にひどく悩まされました。
-----解決策--------------------------------
ガンマのあいまいさが原因です
これを
$this->{$property}['value']
$this->{ に変更できます。 $property}['value'] = $value ;
……
print_r……
------解決策---------
従来の方法を使用する方が良いでしょう。属性を直接変更しないでください。マジックまたはカスタマイズされた get および set メソッドを使用することをお勧めします。それは多くの問題を回避します。