今日は、以前はうまく機能していたオブジェクトモデルで奇妙な動作が発生したことに気付きました。 PHPのバージョンに変更して他の誰かが似たような経験をしているのか疑問に思う)配列であるオブジェクトプロパティのキーを設定する
最近まで、私は手動で配列だったオブジェクトプロパティのキーを設定することができました。私のモデルの1つの具体的な実装は、次のようなギャラリークラスに含まれていました:
public function __construct($gid){
parent::__construct($gid);
$this->Photos = $this->getPhotos();
$this->AlbumCover = $this->getCover();
}
public function getPhotos(){
$sql = 'SELECT GalleryPhotoID FROM GalleryPhoto WHERE GalleryID = ?';
$params = array($this->GalleryID);
$allids = DatabaseHandler::GetAll($sql, $params);
$output = array();
foreach($allids as $id){
$gp = new GalleryPhoto($id['GalleryPhotoID']);
$output[$gp->GalleryPhotoID] = $gp;
}
return $output;
}
無関係な部分は省略されています。
基本的には、ギャラリーのPhotosオブジェクトの配列キーをデータベース内の個々の写真のIDに設定できます。これにより、個々の繰り返しを記述するのが簡単になり、全体がより円滑に実行されました。
私はそのキーを何に設定しても、foreachが実行されると自動整数が生成されます。理論的にはすべての繰り返しを置き換えるリテラル文字列を入力しようとしましたが、プロパティPhotosのキーのインクリメントされた自動整数があります。
[Photos] => Array
(
[0] => GalleryPhoto Object
(
[GalleryID] => 9
[Caption] =>
[Orientation] => 0
[AlbumCover] =>
[DateAdded] => 2011-01-03 16:58:51
[GalleryPhotoID] => 63
[Thumbnail] =>
[Image] =>
[src] => http://..com/galleryImage/getImage/63
)
[1] => GalleryPhoto Object
(
[GalleryID] => 9
[Caption] =>
[Orientation] => 0
[AlbumCover] =>
[DateAdded] => 2011-01-03 16:58:51
[GalleryPhotoID] => 64
[Thumbnail] =>
[Image] =>
[src] => http://..com/galleryImage/getImage/64
)
)
は手動配列は、いくつかのマイナーリリースで削除されているオブジェクトのプロパティ内のキーを設定するabillityを持っており、私はそれに気づいていないのですか?私は、すべての上で検索し、PHPのマニュアルサイトを見て、答えが見つかりませんでした。誰も似たような経験はありますか?私は考慮すべきより良いアプローチがありますか?私は本当に次の/前のシステムを次の/前のシステムを次の論理IDに戻して実装するのがずっと簡単だったからです(IDは間で削除できるということを心に留めてください)。
ありがとう!
このような制限は導入されていません。私は前にこのようなことを見てきました。そして、それは常にコールスタックのどこかではあいまいなものになります。もう少しコードを投稿できますか? –