[PHP-users 33707] clone()について
Yutaro Mitsui
yutaro @ gauge.zapto.org
2008年 6月 26日 (木) 22:48:23 JST
三井と申します。
clone()が、5.2.5では正常に動きますが、5.1.6では正常に動きません。
コードを抜粋しますと、
protected $_relations = array();
public function fetchResultArray(&$resultArray, &$dataObjectArray,
$index = 0)
{
$recordId = $resultArray[$index];
$dataObjectArray[$recordId] = clone $this;
var_dump($dataObjectArray[$recordId]->_relations[0] ===
$this->_relations[0]);
}
public function __clone()
{
foreach ($this->_relations as &$relation) {
$relation = clone $relation;
}
}
という構文です。
簡単なサンプルコードで実証しようとしましたが、再現しません
でしたので、コードを抜粋して掲載します。
$this->_relationsには、オブジェクトを配列形式で格納します。
var_dumpの部分は、falseになるのを期待しますが、PHP5.1.6では、
trueになる場合があります。
どのような条件で発生するか分かりませんが、配列の最初と最後以外は、
全てtrueになります。
PHP5.2.5では、全てfalseになり問題ありません。
これは、何かの仕様でしょうか?
アドバイスいただければ、幸いです。
以上、よろしくお願いいたします。
PHP-users メーリングリストの案内