Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Metody magiczne, Czy jest sens stosowania?
JoShiMa
post
Post #1





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

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


dla mnie to chore wywoływac metodę magiczną wewnątrz klasy.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Eby
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 1
Dołączył: 16.10.2007

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


Z mojej perspektywy to trochę tak jakby sprzeczać czy lepiej użyć "return" czy "echo".
Jednego i drugiego należy używać tam gdzie to jest potrzebne (ułatwia życie, tworzy kod łatwiejszy do modyfikacji itp).
Np. używając metod magicznych do view helperów (niezbyt ładny przykład) :
  1. echo helper->tag('a', 'more', array('href'=>'controller::action','class'=>'link'));

oczywiście zamiast tego (bo to magiczne, nieładne i nieczytelne) można użyć:
  1. $taghelper = new View_Helper_Tag();
  2. $taghelper->setTag('a');
  3. $taghelper->setContent('more');
  4. $taghelper->setParam('href', array('controller'=>'controller','action'=>'action'));
  5. $taghelper->setParam('class', 'link');
  6. echo $taghelper->returnHtml();

Moim zdaniem pierwszego kodu używa się łatwiej i szybciej niż drugiego - zwłaszcza w sytuacji gdy mamy 700 linii w szablonie i nie chcemy z jakichś powodów tworzyć ich tam 4000.
Tego samego helpera i metod magicznych można użyć w klasie która służy do budowania całego grida czy formularza lub w samej klasie helper by nie dublować kodu.
Teraz gdy dochodzi dodatkowy rodzaj helpera, wystarczy dodać odpowiednią klasę obsługi a samego wrapera już nie trzeba ruszać.
Oczywiście możemy zrobić fabrykę która zwraca odpowiedni rodzaj helpera i wtedy nie mamy części kłopotów, ale pojawiają się inne - każde podejście ma swoje wady i zalety i składni języka należy użyć w zależności od potrzeb (i naszych preferencji).
Go to the top of the page
+Quote Post

Posty w temacie
- JoShiMa   Metody magiczne   25.02.2011, 10:13:09
- - wookieb   Nieprawda. Jest sens, jeżeli niesie to za sobą jak...   25.02.2011, 10:14:05
|- - JoShiMa   Cytat(wookieb @ 25.02.2011, 10:14:05 ...   25.02.2011, 10:15:16
- - wookieb   Przykład [PHP] pobierz, plaintext class test ...   25.02.2011, 10:18:58
|- - JoShiMa   Cytat(wookieb @ 25.02.2011, 10:18:58 ...   25.02.2011, 10:26:48
- - Crozin   Sensowność metod magicznych sama w sobie jest spra...   25.02.2011, 10:20:52
- - wookieb   Cytat(Crozin @ 25.02.2011, 10:20:52 )...   25.02.2011, 10:24:34
- - Daiquiri   Nie widzę przeszkód w stosowaniu metod magicznych,...   25.02.2011, 10:28:22
- - wookieb   Chyba jednak nie zdajecie sobie sprawy co mówicie....   25.02.2011, 10:33:46
|- - JoShiMa   Cytat(wookieb @ 25.02.2011, 10:33:46 ...   25.02.2011, 13:41:30
- - Crozin   CytatSłyszałem o tym ale nadal nie widzę powodu by...   25.02.2011, 10:35:58
- - wookieb   Cytat(Crozin @ 25.02.2011, 10:35:58 )...   25.02.2011, 10:44:36
- - Crozin   Przede wszystkim powinieneś myśleć nie o autorze k...   25.02.2011, 11:04:03
- - wookieb   To może podam przykład z życia. [PHP] pobierz, pla...   25.02.2011, 12:26:59
- - thek   To ja dorzucę jeszcze moją uwagę. Funkcje magiczne...   25.02.2011, 12:34:21
- - wookieb   Cytat(thek @ 25.02.2011, 12:34:21 ) T...   25.02.2011, 12:37:50
- - cojack   Dla mnie jest rzeczą okrutną że nie można __set i ...   25.02.2011, 12:43:05
- - Eby   Z mojej perspektywy to trochę tak jakby sprzeczać ...   25.02.2011, 13:06:08
- - thek   Cytat(wookieb @ 25.02.2011, 12:37:50 ...   25.02.2011, 13:39:36
- - Crozin   @Eby: Jak można porównywać return do echo? Poza ty...   25.02.2011, 13:51:03
|- - Eby   Cytat(Crozin @ 25.02.2011, 13:51:03 )...   25.02.2011, 14:11:14
- - cojack   Nudni jesteście, ilu programistów tyle pomysłów ja...   25.02.2011, 14:02:28
- - Zyx   wookieb -> i ja bym ten Twój przykład z życia z...   25.02.2011, 14:12:11
|- - Eby   Cytat(Zyx @ 25.02.2011, 14:12:11 ) Ni...   25.02.2011, 14:23:39
- - Zyx   Jakie "dodatkowe parametry", kiedy nic z...   25.02.2011, 14:46:09
- - wookieb   Cytat(thek @ 25.02.2011, 13:39:36 ) W...   26.02.2011, 12:53:29
- - Crozin   Przecież napisałem, że w przypadku metod __get() i...   26.02.2011, 13:37:10
- - thek   Wookieb. Ja nie jestem anty-magic zatwardziały. Ni...   26.02.2011, 14:57:15


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

 



RSS Aktualny czas: 9.10.2025 - 12:48