Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: ООП и __tostring

Сообщения:  [1-2] 

 
 автор: cheops   (04.04.2012 в 13:03)   письмо автору
 
   для: jonik   (03.04.2012 в 19:42)
 

>Мы частично разрушили концепцию MVC, но это наверно и не страшно.....
Если вы реализуете шаблон MVC, то страшно. Это примерно как сказать мы создавали вагон метро, но у нас получилась очень эффективная скотобойня, но это не страшно, давайте разберем теперь как туда побольше людей загрузить :)))

1. Стоит. Более того, стоит создать отдельный класс MVC view (может даже абстрактный) и от него наследовать нужные вам классы для конкретных реализаций страниц. Пусть будет модель, пусть будет контроллер, если он делает что-то полезное, пусть будет отдельный класс, унаследованный от view, который будет уметь из данных предоставляемых контроллером создавать HTML-страницу, причем при помощи метод __tostring().
2. Ни в коем разе, ООП для того и создан, чтобы от этого уйти.
3. Было бы хорошо и в русле MVC, причем ничто не мешает задействовать __tostring() там.

  Ответить  
 
 автор: jonik   (03.04.2012 в 19:42)   письмо автору
 
 

Доброго времени суток..... уж простите, но я вновь буду пытать вас, возможно глупыми, вопросами по ООП.....

Итак.... в соседнем посте многоуважаемый Игорь Вячеславович дичайше одобрил использование данной волшебной функции........ Но чем дальше в лес, тем больше дров..........

class goods{
private $id;
private $var;
// etc
public function __construct($id){
$this->id=$id;
{

// methods/////////////////

public function __tostring{
$teml=file get contents (templ.html)
//далее парсинг, подстановка значений и т.п.
$string=готовая к отображению html-строка данного объекта.....
return $string
}
}

Мы частично разрушили концепцию MVC, но это наверно и не страшно..... Страшно другое.... теперь нам надо этот же объект отобразить по-другому.... использовать другой шаблон, или например отображать другие его свойства..... т.е. нужно несоклько вариантов отображения...... Первое что приходит на ум - НАСЛЕДОВАТЬ.... Отсюда и вопрос......

1. Стоит ли наследовать классы, только ради переопределения метода __tostring() ? Как заметил мой программист на работе - в данном варианте можно запутаться, т.к. наследование может пойти по ветке отображения, а потом по ветке логики (если появятся товары другого типа с частично другими свойствами и методами).......

2. Или лучше написать свой метод tostring и снабдить его if -ми в которых будет выбираться нужный алгоритм отображения?.....

3. Или вообще создать отдельные классы, в которых будет реализована логика именно отображения.. т.е. из поступивших данных сварганить готовую к выводу HTML-строку.....
class goods_display или class shop-cart_display и уже в них реализовывать наследование в случае, если потребуется много вариантов отображения какой-либо сущности.....?

  Ответить  

Сообщения:  [1-2] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования