ちょうど今日、以前は正常に機能していたオブジェクトモデルの奇妙な動作に気づきました(可能な限りすべてをチェックし、その構成については何も変更されていないため、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;
}
関係のない部分は省略。
基本的に、Galleryの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
)
)
配列であるオブジェクトプロパティ内のキーを手動で設定する機能は、いくつかのマイナーリリースで削除されましたが、私はそれを認識していませんか?私はいたるところをグーグルで検索し、PHPマニュアルサイトを調べましたが、答えが見つかりませんでした。誰かが似たようなことを経験したことがありますか?私が考慮すべきより良いアプローチはありますか?次の論理IDに戻るajaxリクエストを介して次/前のシステムを実装するのが非常に簡単になったので、私はこれを実際に使用しました(IDは間で削除できることに注意してください!)
ありがとう!