BG Development


Страници: (3) [1] 2 3   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Проблем с разбирането на Controller и Model
yoyovec
Публикувано на: 25-10-2017, 13:35
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 230
Регистриран на: 28.08.05



Здравейте! Имам следния проблем кое къде да сложа - в Controller-a или Model-a. Ползвам съвсем елементарен MVC Framework.

Това е контролера, с който зареждам модела.

CODE

class Engine {

$this->model('MatchEngine');

}


Примерно съдържание на модела, който 'играе' мача и го записва в базата данни.

CODE

class MatchEngine {

   private function compareTactics() {

//Сравнявам тактиките на двата отбора
   }

   private function someEvent($homePlayer, $awayPlayer) {

//Сравнявам тактиките на двата отбора
   }

   private function someEvent($homePlayer, awayPlayer){

//Сравнявам тактиките на двата отбора
}

   public function runMatch() {
//.....
}

   private function saveMatch() {
//....
   }

}


Този модел се нуждае от входящи данни от други модели - Player, Team, Weather...etc . Проблема ми е, че не знам откъде да му ги подам - дали от контролера:

CODE

class Engine {

$homeTeam = $this->model('Team');

$homePlayer = $this->model('Player');

$matchEngine = $this->model('MatchEngine');

$this ->matchEngine->setHomePlayer($this->homePlayer->getSomeData())

$this ->matchEngine->setHomeTeam($this->homeTeam->getSomeTeamData())
....

...
}



А другия вариант е да зареждам моделите в самия MatchEngine. Как е правилно, и ако и двата варианта не са правилни - как да го направя. Разбира се, много абстрактни неща не са за препоръчване, защото съм хабен icon_smile.gif
PMEmail Poster
Top
Fly
Публикувано на: 25-10-2017, 13:57
Quote Post



Име: Димитър Костов
Група: Потребител
Ранг: Почетен член

Мнения: 3850
Регистриран на: 02.02.07



Вземи прочети някой книга, че пирличаш на типичния php-ар
PMEmail Poster
Top
yoyovec
Публикувано на: 25-10-2017, 14:08
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 230
Регистриран на: 28.08.05



Е аз не съм програмист, така че е възможно да приличам на типичен php-ar,.. icon_smile.gif
PMEmail Poster
Top
hristonev
Публикувано на: 25-10-2017, 14:13
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 32
Регистриран на: 19.09.17



Какво е "хабен"? А отностно MC модела то моделите са хранилища на данни, там не ти трябвало да има каквато и да е логика, освен в специфични случаи. Контролера се грижи за цялата логика. И така ако имаме модели league, team, match то стругурата на тези модели би била следната. league има име. Team има име и league, match има час team-home, team, away и league. Правите си стандартните гет-сет методи на тази база и контролера навързва данните на моделите. Пак казвам не пишете методи, които да вършат някаква работа в модела. Естествено може да си имате сървиси, които да вършат част от работа... но е добре да почетете по темата.
PMEmail Poster
Top
yoyovec
Публикувано на: 25-10-2017, 14:25
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 230
Регистриран на: 28.08.05



Е нали в модела трябва да е цялата бизнес логика, а не в контролера - говорим за MVC, случая е изключение и затова няма view. Но каквото съм чел досега и гледал логиката винаги е в модела.

Ако в модела имам $a и $b, къде трябва да сметна $a*$b? Ако правилно разбирам:

->controler -> model
-> controler -> service ($a*$b)
->controller -> view

или

->controler -> model
-> controler -> function ($a*$b)
->controller -> view

Това мнение е било редактирано от yoyovec на 25-10-2017, 14:48
PMEmail Poster
Top
thrawn
Публикувано на: 25-10-2017, 16:30
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 997
Регистриран на: 17.01.17



Бизнес логиката е в контролерите. В моделите се слага само логика която касае данните с които те работят (валидация например). В изгледите се слага логика която реализира техните функции.
PMEmail Poster
Top
purjola
Публикувано на: 25-10-2017, 16:39
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1563
Регистриран на: 18.10.11



QUOTE (Fly @ 25-10-2017, 14:57)
Вземи прочети някой книга, че пирличаш на типичния php-ар

When people tell me PHP is not a real programming language
user posted image
PMEmail Poster
Top
r4nd0m
Публикувано на: 25-10-2017, 17:40
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1007
Регистриран на: 05.09.07



QUOTE (thrawn @ 25-10-2017, 16:30)
Бизнес логиката е в контролерите. В моделите се слага само логика която касае данните с които те работят (валидация например). В изгледите се слага логика която реализира техните функции.

мне


--------------------
"Happiness only real when shared."
PMEmail Poster
Top
thrawn
Публикувано на: 25-10-2017, 17:44
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 997
Регистриран на: 17.01.17



ОК, ще му предам...
PMEmail Poster
Top
r4nd0m
Публикувано на: 25-10-2017, 17:58
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1007
Регистриран на: 05.09.07



даже не знам как да питам google че да ми покаже резултати в подкрепа на тезата че в контролерите трябва да има бизнаес/аплликейщън логика. темата е малко инфалтилна


--------------------
"Happiness only real when shared."
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (3) [1] 2 3  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2015 | BG Development | All Rights Reserved
RSS 2.0