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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Конечно ООП)))))))
 
 автор: jonik   (05.04.2012 в 15:38)   письмо автору
 
 

Доброго времени суток! Есть такой вопросик..... Итак

Class a {
private $id;
private $param1;
private $param2;
private $param3;
public function __construct($id){
$this->id=$id;
}

//// методы

и вот напрмеир етьс такой метод......
public function summ(){
$summ=$this->param1+$this->param2+$this->param3;
return $summ;

}

public function __GET($var){
return $this->$var;
}
}

Это класс модели...... Контроллер работет с ним, реализует какую-то логику и т.п... Потом передает классу VIEW в качестве параметра ЭТОТ ОБЪЕКТ.......
т.е. очень грубо так...
$toview=new a($id);

$toview->выполняем всякие методы

а теперь в класс view передаем в качестве параметра объект $toview.....
Класс view описывать не буду.... но вот предположим ситуацию...... приложение работает... и тут появляется новая задача..... напрмиер если результат выполнения метода $toview->summ() больше 10, то название объекта нужно отобразить красным цветом....... Как правильнее сделать....

1. В контроллере выполнить примерно следующее

$toview=new a($id);
$toview->выполняем всякие методы
$sum=$toview->summ();
if ($sum>10){
$red=true;
}

и уже в класс отображения передавать не только сам объект toview, но и флаг $RED..... и отображение в зависимости от этого флага покажет либо красным, либо нормальным цветом.....

или........

2. Контроллер вообще не в теме про то, как будет отображаться..... Он просто передает объект $toview отображению....... и уже отображение у себя внутри, запускает метод $toview->summ

Не нарушит ли 2-й вариант (хотя он мне безумно нравиться) концепцию MVC? Получается, что отображение минуя контроллер лезет за информацией в модель.... Хотя формально контроллер передал объект в представление, но вот имеет ли представление право лазить в этот объект, дергать его методы, обращаться в свойствам и т.п.?

  Ответить  
 
 автор: Sfinks   (05.04.2012 в 17:09)   письмо автору
 
   для: jonik   (05.04.2012 в 15:38)
 

А не проще, раз сумма влияет на отображение, добавить объекту свойство сумм? И пусть тогда вид проверяет свойство $toview->summ и выводит результат.

  Ответить  
 
 автор: jonik   (05.04.2012 в 17:52)   письмо автору
 
   для: Sfinks   (05.04.2012 в 17:09)
 

Да это, собственно, и не важно, методом получать сумму или обращаться к свойству.... Главное делают ли вообще так в рамках MVC? Правда в вашем варианте сперва нужно будет как-то запустить метод summ(), который изменит состояние свойства, а потом получить само свойство......

  Ответить  
 
 автор: Sfinks   (05.04.2012 в 21:01)   письмо автору
 
   для: jonik   (05.04.2012 в 17:52)
 

Да я сам учусь только ООП ) Поэтому это предположение так... На сколько я это понимаю ) Но раз объект передается в ВИД, значит он и его свойства как-то используются в выводе? Почему тогда и не использовать свойство сумм? А метод можно запустить из контроллера. Я так думаю. А там подождем, посмотрим что cheops скажет )

  Ответить  
 
 автор: Sfinks   (05.04.2012 в 21:43)   письмо автору
 
   для: Sfinks   (05.04.2012 в 21:01)
 

Ну или я не знаю.... Если уж вид совсем не должен ни от чего зависеть и не должен иметь никаких ифов, то тогда нужно Вид_стандарт и Вид_красный и контроллером уже смотреть кому из них отдавать объект.

  Ответить  
 
 автор: jonik   (05.04.2012 в 22:38)   письмо автору
 
   для: Sfinks   (05.04.2012 в 21:43)
 

да, тоже вариант конечно....... ну скажем так... if-ы в виде, которые влияют только на отображение - ИМХО нормально...... Меня только смущает, что вид лезет в модель без ведома контроллера.... Контроллер просто передал виду готовый объект, "типа на, играйся с ним"...... но вот хорошо ли это, я не знаю))))

  Ответить  
Rambler's Top100
вверх

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