Я недавно начал использовать mysql_fetch_object()
при циклическом просмотре объектов в моей лично разработанной CMS.
Раньше я использовал цикл while($row = mysql_fetch_assoc($rows)) { ... }
, а затем я создавал объект и присваивал ему значения в цикле:
$object = new Object();
$object->set_by_row($row); // Does what it says
Что яочень хочу сделать, это использовать:
while ($object = mysql_fetch_object($rows, 'self')) { ... }
Я также пытался использовать:
while ($image = mysql_fetch_object($rows, 'Image')) { ... } // Actual class name
Но я не могу!Большинство моих классов являются подклассами родительского класса с именем Identifiable, который представляет собой набор переменных и функций, которые применяются ко всем моим подклассам.Он также хранит идентификатор каждого объекта - поэтому, когда я использую mysql_fetch_assoc()
, устанавливаются только переменные, установленные в этом классе, а не связанные родительские переменные.
Кто-нибудь знает способ использования mysql_fetch_object
для установки объектов, включая их унаследованные переменные?
Примечание. Это все внутри статической функции внутри подкласса.
Вотvar_dump
после строки назначения:
object(Image)#5 (16) {
["title":"Image":private]=> string(0) ""
["location":"Image":private]=> string(0) ""
["description":"Image":private]=> string(0) ""
["file_name":"Image":private]=> string(14) "0_IMG_0984.JPG"
["original_x":"Image":private]=> string(4) "2592"
["original_y":"Image":private]=> string(4) "1944"
["type":"Image":private]=> string(3) "jpg"
["id"]=> string(1) "1"
["added_by"]=> string(1) "1"
["updated_by"]=> string(1) "0"
(...) ["deleted_by"]=> string(1) "0" ["deleted"]=> string(1) "0" ["published"]=> string(1) "0" ["datetime_added"]=> string(19) "2012-02-25 22:51:08" ["datetime_updated"]=> string(19) "0000-00-00 00:00:00" ["datetime_deleted"]=> string(19) "0000-00-00 00:00:00"
}
Как видите, ID там, но мой метод get находится в родительском классе и ничего не возвращает.
Метод получения в классе Identifiable
находится здесь:
function get_id()
{
return $this->id;
}
КРИТИЧЕСКОЕ ОБНОВЛЕНИЕ:
После того, как я установил объект: while ($image = mysql_fetch_object($rows, 'Image')) { ... }
Я попытался вызвать echo $image->get_id();
и онработает отлично!
Тем не менее, моя проблема все еще существует: в настоящее время я вызываю функцию в цикле (get_interface_preview()
), которая на самом деле содержит вызов $this->get_id()
и по-прежнему ничего не возвращает.
Завершите капитальный ремонт!
Моя проблема здесь:
function get_interface_preview()
{
echo $this->get_id();
return "<a href='?a=edit&id='".$this->get_id()."'><img src='".IMAGE_PATH."library/admin_thumb/".$this->file_name."'></a>";
}
Это хорошо идентифицирует идентификатор, но идентификатор не добавляется в разметку .. Я чувствуюЯ сделал как-то ОГРОМНУЮ ошибку новичка?!
ИСПРАВЛЕНО!Мне очень жаль, это был апостроф не в том месте!К сожалению,