Только сегодня я заметил странное поведение в объектной модели, которая ранее работала просто отлично (я проверил все возможное, и ничего в его конфигурации не изменилось, поэтому я подозреваю, что изменилась версия PHP, и хотел бы знать, есть ли у кого-то еще опыт ничего похожего)
До недавнего времени я мог задавать ключи свойств объектов, которые были массивами, вручную. Конкретная реализация этого в одной из моих моделей содержалась в классе галереи, который выглядел так:
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;
}
Несущественные части опущены.
В принципе, я мог бы установить ключи массива объекта Фото Галереи для идентификатора отдельной фотографии в базе данных. Это только облегчило кодирование для отдельной итерации и сделало все это более плавным.
Теперь, независимо от того, на что я установил этот ключ, автоматические целые числа генерируются при запуске 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 и не нашел ответа. Кто-нибудь испытывал что-нибудь подобное? Есть ли лучший подход, который я должен рассмотреть? Я действительно пошел с этим, потому что это сделало намного проще реализовать следующую / предыдущую систему через запросы ajax к следующему логическому идентификатору (помня, что идентификаторы могут быть удалены между!)
Спасибо!