Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Кантроллерный контроллер или как всетаки делать не надо

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: жду критиков
FrozenRain
Отправлено: 11 Декабря, 2013 - 11:56:04
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)

[+]


Приветствую всех! Наверное все сталкивались с проблемой когда ты кажется пишешь "правильно" но код просто не нравится.. Ты начинаешь искать изъяны но эти изъяны могут оказываются и не изъянами.... В то время как реальные ошибки могут остаться без внимания как правило в такие случаи нас поправляет наша высоко квалефицированая команда. Но не все мы там работаем за частую есть знакомый программист имеющий больший опыт... Но что делать если ваши взгляды слегка не сходятся...
Вот и решил я отдать сие дискуссию на суд все общьный)
1 Друзья я не хочу чтобы мой вопрос перешел в спор нада ли использовать МВЦ или нет
2 я бы хотел чтобы как положительная так и отрицательная критика была подкреплена обоснованием
И так начнем.... мой знакомый говорит что контроллер должен лиш запускать методы в нутри себя и, метод должен подключать модель модель будет делать все операции подключая вспомогательные класс. Вспомогательными классам он называет мо узко профильные модели и, именно модели должны передавать результаты во вью.

Мое мнение что методы контроллера должны оперировать результатами вычеслений таких узко профильных моделей и, передавать все во вью рассудите кто же прав ?

Далее вопрос 2 все мои модели построены на таком примере есть метод делающий выборку и записывающий ее в свойство. Есть геттер этого свойства. В итоге все сводетса к создай объект, запусти некий магический метод который что то делает, обротись к геттеру для получения результата.
Логически это конечно верно но мне не очень нравится запускать какой
(Добавление)
....какойто* метод перед запуском.. может я придераюсь и так и нужно писать или все таки тут есть ошибка..и если есть как ее закрыть?
ну и 3 прошу по смотреть мой контроллер и указать на неверные методы только пожалуйсто с обоснованием!

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. class Controller_Home extends Controller_Index {
  3.  
  4.     private $counterNews = null;
  5.     private $paginationParam = array();
  6.      
  7.    
  8.         public function action_index()
  9.         {      
  10.           $this->start();
  11.         if($this->paginationParam['page'] <= $this->paginationParam['counterPage'] or $this->counterNews === 0){
  12.            
  13.         $AllNews = $this->setAllNews($this->paginationParam['space'], $this->paginationParam['delimetr']);
  14.        $blockLeft = View::factory('v_left', array(
  15.        'result' => $AllNews
  16.        ));
  17.        
  18.        $blockRight = View::factory('v_right');
  19.         $center = array();
  20.        $footer = $this->defaultFuterPaginaton($this->paginationParam['downPage'], $this->paginationParam['viewPage'], $this->paginationParam['prewPage']);
  21.        $center = array($blockLeft, $blockRight);
  22.        $this->setActivateVisual('/media/css/style.css', $center,  $footer);
  23.          }else{
  24.             throw new HTTP_Exception_404();
  25.          }
  26.         }
  27.     private function start(){
  28.          $this->counterNews = $this->setCounterNews();
  29.         $this->paginationParam = $this->usePaginator(Model::factory('PaginationNews'), $this->counterNews, (int)$this->request->param('id'));
  30.        
  31.        
  32.     }
  33.    
  34.     private function setCounterNews(){
  35.         $obj = Model::factory('CounterNews');
  36.         $obj->countNotDeleteNews();
  37.         $res = $obj->getCounterNews();
  38.         return $res;
  39.     }
  40.      private function setAllNews($space, $delimiter){
  41.         $obj = Model::factory('SelectAllNews');
  42.         $obj->setPaginationNews($space, $delimiter);
  43.         $res = $obj->getNews();
  44.        
  45.         return $res;
  46.     }
  47.    private function setActivateVisual($style, $cental = null, $footer = null){
  48.  
  49.      $this->template->style = $style;
  50.         $this->template->footer = $footer;
  51.         $this->template->center = $cental;
  52.    }
  53.     public function action_news(){
  54.         $this->counterNews = $this->setCounterNews();
  55.         $news = (int) $this->request->param('id');
  56.         if($news <= 0 AND $this->counterNews > $news){
  57.             $news = 1;
  58.         }
  59.         $modules = Model::factory('OneSelectNews');
  60.         $modules->queryOneNews($news) ;
  61.         $result = $modules->getOneNews();
  62.         if($result === false){
  63.             $result = "данной новости не существует";
  64.             }else{
  65.                 $center = array();
  66.             }
  67.        
  68.         $newsPage = View::factory('v_news', array(
  69.         'modules' => $result
  70.         ));
  71.          $center = array($newsPage);
  72.          
  73.          $this->setActivateVisual('/media/css/styleNews.css', $center);
  74.     }
  75.    
  76.     private function rightBlock(){
  77.           if(isset($_POST['send_x'])){
  78.         $ress = Request::factory('login/')->execute();
  79.            // $ress = Request::initial();
  80.        var_dump($ress);
  81.  
  82.         if($ress === false){
  83.             echo"HELLO !!";
  84.             //HTTP::redirect('privateOfise/');
  85.         }else{
  86.            
  87.             foreach($ress as $error){
  88.                
  89.             }  
  90.         }
  91.         }  
  92.     }
  93. } // End Welcome
  94.  
  95.  
  96.  
 
 Top
Мелкий Супермодератор
Отправлено: 11 Декабря, 2013 - 12:03:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Есть сторонники тонких моделей, есть толстых.
Тема столь же холиварна и аргументы бессмысленны, как споры о стиле расстановки скобок.


-----
PostgreSQL DBA
 
 Top
caballero
Отправлено: 11 Декабря, 2013 - 12:04:48
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
модель будет делать все операции подключая вспомогательные класс.

да
Цитата:
методы контроллера должны оперировать результатами вычеслений таких узко профильных моделей и, передавать все во вью

нет
(Добавление)
Цитата:
Тема столь же холиварна и аргументы бессмысленны

ну это для тех кто уверен что PHP, ООП и MVC - это одно и тоже.

Классическая концепция MVC предполагает толстую модель.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
FrozenRain
Отправлено: 11 Декабря, 2013 - 12:43:47
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)

[+]


caballero пишет:
Классическая концепция MVC предполагает толстую модель.

Уважаемый лично я понемаю под толстой моделью это не гибкое устройство созданое исключительно под одну задачу то есть похожесть задач не подойдет для 1 модели.
Вы предполагаети что такой способ будет лучше ?

2 момент ребят а что вы скажете по поваду
Далее вопрос 2 все мои модели построены на таком примере есть метод делающий выборку и записывающий ее в свойство. Есть геттер этого свойства. В итоге все сводетса к создай объект, запусти некий магический метод который что то делает, обротись к геттеру для получения результата.
Логически это конечно верно но мне не очень нравится запускать какой
(Добавление)
....какойто* метод перед запуском.. может я придераюсь и так и нужно писать или все таки тут есть ошибка..и если есть как ее закрыть?
 
 Top
caballero
Отправлено: 11 Декабря, 2013 - 12:50:08
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Вы предполагаети что такой способ будет лучше ?

я ЗНАЮ что такой способ лучше.

Перенос бизнес логики в контроллер противоречит самому смыслу MVC. и никаких проблем с гибкостью при грамотной разработке нет.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
FrozenRain
Отправлено: 11 Декабря, 2013 - 12:53:36
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Окт. 2012  


Помог: 0 раз(а)

[+]


Благадарю за наставление то есть мне и вью прям в модели подключать ?
И не могли бы вы подсказать мне с моим 2 вопросом по поводу методов и геттеров ?
 
 Top
caballero
Отправлено: 11 Декабря, 2013 - 13:10:39
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




ну не делайте их где нет явной необходимости


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB