Начал осваивать ООП по книге Метта Зандстра, но застрял на вот этом. Есть класс, на его основе создаются 2 объекта $item_1 и $item_2: Код (Text): $item_1 = new classItems( свойства ); $item_2 = new classItems( свойства ); создан класс для вывода инфы по всем объектам в цикле: Код (Text): class itemWrite { private $all_items = array(); public function addItem (classItems $ttt) { $this->all_items[] = $ttt; } public function writeItemInPage () { $item_main_text = ""; foreach ($this->all_items as $ttt) { $item_main_text = $ttt->getItemInfo(); } print $item_main_text; } } вывод без цикла проходит. Но с циклом не получается: Код (Text): $write_item = new itemWrite(); $write_item->addItem($item_1); $write_item->addItem($item_2); $write_item->writeItemInPage(); в массив попадает только последний объект $item_1 и выводится только он. Как правильно сделать? Добавлено спустя 22 минуты 41 секунду: Ошибка найдена. print вынесен за пределы foreach Автора на кол))
Тогда у меня вообще вопрос встает касательно этого фрагмента: Код (PHP): $item_main_text = ""; foreach ($this->all_items as $ttt) { $item_main_text = $ttt->getItemInfo(); } print $item_main_text; При чем тут массивы-то? И зачем переменную столько раз просто перезаписывать? Код (PHP): foreach ($this->all_items as $ttt) { echo $ttt->getItemInfo(); } либо Код (PHP): $item_main_text = array(); foreach ($this->all_items as $ttt) { $item_main_text[] = $ttt->getItemInfo(); } print_r($item_main_text); Тогда уж.
Код (Text): class itemWrite { private $all_items = array(); public function addItem (classItems $ttt) { $this->all_items[] = $ttt; } public function writeItemInPage () { $item_main_text = ""; foreach ($this->all_items as $ttt) { $item_main_text .= $ttt->getItemInfo(); } print $item_main_text; } } попробуй так...не знаю поможет, но попробуй
А чем не ООП? Класс же есть уже)) Fell-x27, я ж уже подписал, что уже решил проблему. Я пока делаю все по книжке, а в реальном проекте уже по своему буду делать. У меня тут несколько вопросиков образовалось еще: 1. Что правильней использовать print или echo? Всегда использовал echo, а в книге везде print. Думал может в ООП так и надо? Или вообще пофиг? 2. Раньше использовал везде двойные кавычки, а в html тексте внутри php кода одинарные Код (Text): echo "<p class='main'>".$item["text"]."</p>"; Потом где-то прочитал, что правильней и быстрее обрабатывается код, где кавычки наоборот Код (Text): echo '<p class="main">'.$item['text'].'</p>'; И начал писать код уже таким образом. Тут в книге опять двойные кавычки везде используются. Как правильно то? Но тут одну особенность заметил при написании кода в моем редакторе (Geany). Если писать вот такой код: Код (Text): $info = "{$this->discount}"; то свойство discount предложится редактором автоматически при вводе нескольких начальных символов слова, т.к. это свойство уже имеется в скрипте. Если писать в одинарных кавычках то этого уже не произойдет. Исходя из этого, а может из за особенностей Geany, двойные кавычки правильней. 3. В этой же книжке постоянно используется примерно вот такая конструкция для вставки переменных в html код: Код (Text): $info = "<p>{$this->discount}</p>"; а в чем отличие этой конструкции от вот этой?: Код (Text): $info = "<p>".$this->discount."</p>"; Или это просто разные реализации одного и того же?
Вообще пофиг. ООП и print никак не связаны.Более того, нет ООП-php и неООП-php как взаимоисключающих вещей. Можно вообще делать гибридные решения. Это было актуально до 5го пыха. Теперь ты разницу не заметишь в реальном мире, только в супер-изощренных тестах. Как нравится, так и правильно. Ни в чем. Но вторая будет работать там, где по версии не потянет первая.
Fell-x27, спасибо за краткий и внятный ответ. А то гуглеж выдает много противоречивых ответов. Короче, пишу, как хочу)))
Все очень просто. Смотри на даты постов, утверждающих, что одни символы экономнее других. Скажем так, повсеместная замена кавычек не даст тебе выигрыша в производительности проекта на N%. Это уже давно не мера оптимизации, а экономия на спичках. Оптимизировать надо алгоритмы и архитектуру. И то, тогда, когда это нужно. Отвоевывать 2кб памяти у скрипта путем перепиливания половины кода - это не тру. А оптимизировать что-то путем замены кавычек - это вообще смех сегодня.