Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pytanie odnośnie Controllera w MVC
CuteOne
post
Post #1





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Witam,

i z góry przepraszam moderację za ogólny temat wątku ale szczerze nie wiedziałem jak inaczej go nazwać. Otóż przyglądając się ostatnio budowie Zenda natknąłem się na dość nie zrozumiałą dla mnie "rzecz".

Najpierw kawałek kodu:
  1. // Źródło "http://www.karolnowicki.pl/zend-framework/artykul/pokaz/system-logowania-w-zend-framework/"
  2. public function loginAction()
  3. {
  4. $form = new Form_Login();
  5. $form->setAction('/uzytkownicy/login')
  6. ->setMethod('post');
  7. if ($this->_request->isPost() && $form->isValid($_POST)) {
  8. // pobieramy dane z formularza
  9. $data = $form->getValues();
  10. // pobieramy domyślny adapter bazy danych
  11. $db = Zend_Db_Table::getDefaultAdapter();
  12. // tworzymy instancję adaptera autoryzacji
  13. $authAdapter = new Zend_Auth_Adapter_DbTable($db, 'uzytkownicy', 'email', 'haslo');
  14. // wprowadzamy dane do adaptera
  15. $authAdapter->setIdentity($data['email']);
  16. $authAdapter->setCredential(md5($data['password']));
  17. // sprawdzamy, czy użytkownik jest aktywny
  18. $authAdapter->setCredentialTreatment("? AND status = '1'");
  19. // autoryzacja
  20. $result = $authAdapter->authenticate();
  21. if ($result->isValid()) {
  22. // umieszczamy w sesji dane użytkownika
  23. $auth = Zend_Auth::getInstance();
  24. $storage = $auth->getStorage();
  25. $storage->write($authAdapter->getResultRowObject(array(
  26. 'id', 'email', 'imie', 'nazwisko', 'rola'
  27. )));
  28. return $this->_redirect('/');
  29. } else {
  30. $this->view->loginMessage = "Niepoprawny login lub hasło";
  31. }
  32. }
  33. $this->view->form = $form;
  34. }


Jak widać jest to akcja logowania w kontrolerze UzytkownicyController.php. Tu pojawia się moje pytanie czy w kontrolerze powinno się podawać hmm jak by to nazwać... dane statyczne(nie mylić ze static ;p) takie jak:

$authAdapter = new Zend_Auth_Adapter_DbTable($db, 'uzytkownicy', 'email', 'haslo')
$authAdapter->setIdentity($data['email']);
$authAdapter->setCredential(md5($data['password']));
$storage->write($authAdapter->getResultRowObject(array(
'id', 'email', 'imie', 'nazwisko', 'rola'
)));

Wiem, że pytanie prosto z księżyca ale ni jak mi to nie pasuje do wzorca MVC gdzie kontroler "Odpowiedzialny jest za przetwarzanie zadań i wywoływanie właściwej akcji lub widoku".

ps. wiem, że PHP'owskie FW nie implementują "prawdziwego" MVC ale czy to oznacza, że dopuszczalne jest pakowanie takich rzeczy do kontrolera?

Ten post edytował CuteOne 26.02.2012, 02:35:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


http://phpmagazyn.pl/wpis?id=19
Kod
Gruby i chudy, czyli model i kontroler pod lupą


Przykład z tego artykułu bardzo fajnie zobrazuje to o co pytasz.

edit:
Cytat
ps. wiem, że PHP'owskie FW nie implementują "prawdziwego" MVC ale czy to oznacza, że dopuszczalne jest pakowanie takich rzeczy do kontrolera?
To nie wina FW tylko programisty który go wykorzystuje.

Ten post edytował skowron-line 26.02.2012, 10:07:26


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
by_ikar
post
Post #3





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Cytat
To nie wina FW tylko programisty który go wykorzystuje.


Nie programisty a języka, w którym osiągniecie mvc jest trudne, lub niemożliwe.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Niezależnie od tego czy mamy do czynienia z grubym czy z chudym modelem, takie coś nie ma prawa znaleźć się w kontrolerze w przypadku gdy korzystamy z MVC.

@by_ikar: Jak język może ograniczać bądź utrudniać użycie wzorca z grupy architektonicznych?
Go to the top of the page
+Quote Post
skowron-line
post
Post #5





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Podpinam się do prośby @Crozin -a o wyjaśnienie tej tezy
Cytat
Nie programisty a języka, w którym osiągniecie mvc jest trudne, lub niemożliwe.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
by_ikar
post
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


http://www.zyxist.com/pokaz.php/rozwazania_o_wzorcu_mvc oraz http://www.zyxist.com/pokaz.php/poeksperymentujmy_z_mvc

Póki co nigdzie nie widziałem tak zaimplementowanego mvc w php, gdzie istniałaby bezpośrednia komunikacja miedzy modelem a widokiem. Trudno coś takiego osiągnąć w php, i raczej narobiłoby to więcej problemów i utrudnień niż ułatwień. Napisałem trudne, lub niemożliwe. I praktycznie większość fw implementuje mvp, opisując to mvc.
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


To, że MVC się w PHP nie przyjęło to jedno, a to że niby język miałby uniemożliwiać/mocno utrudniać jego użycie to drugie. Ja osobiście nie potrafię doszukać się żadnego specjalnego ograniczenia narzuconego przez samo PHP.
Go to the top of the page
+Quote Post
by_ikar
post
Post #8





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 26.02.2012, 19:59:38 ) *
To, że MVC się w PHP nie przyjęło to jedno, a to że niby język miałby uniemożliwiać/mocno utrudniać jego użycie to drugie. Ja osobiście nie potrafię doszukać się żadnego specjalnego ograniczenia narzuconego przez samo PHP.


Więc odwrócę kota ogonem. Gdyby nie było żadnego utrudnienia, to w fw takich jak zf, czy sf; zaimplementowane byłoby raczej w miarę bardziej poprawne mvc, niż tak jak jest obecnie, czyli w większości przypadków mvp. Tak przynajmniej wygląda to od logicznej strony. Szczerze mówiąc, nie widzę sensu aby widok miał bezpośrednią komunikację z modelem i mógł się z nim komunikować dwustronnie.
Go to the top of the page
+Quote Post
CuteOne
post
Post #9





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Witam,

tak jak podejrzewałem przedstawiony przeze mnie przykład nijak ma się do MVC. Wszystkim udzielającym się w tym wątku serdecznie dziękuję - rozwialiście moje wątpliwości.

Temat uważam za zamknięty
Go to the top of the page
+Quote Post
Crozin
post
Post #10





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@by_ikar: Tak w ramach podsumowania: Palnąłeś głupotę, bo w PHP nie ma specjalnych ograniczeń uniemożliwiających implementację MVC.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 19:58