Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] __get, __set czy set(), get() ?
Forum PHP.pl > Forum > Przedszkole
aras785
Witam. Według was co jest lepiej używać? Podobno szybciej działa zwykła funkcja niż metody magiczne.
nospor
Szybciej dziala tez czysty assembler, a jednak malo kto w assemblerze pisze wink.gif
aras785
Masz rację wink.gif To co polecasz?
nospor
Zalezy jak lezy wink.gif
Jesli zalezy ci na podpowiadaniu w edytorze to robisz bez magii lub bawisz sie w komentarze.
Jak ci nie zalezy to robisz magie
Jak lubisz duzo pisac metod to robisz bez magii
itd itd smile.gif
Crozin
O ile nie jesteś wstanie podać bezwzględnego argumentu za użyciem metod magicznych w danym przypadku nie powinieneś ich stosować. A że znaleźć taki argument bardzo ciężko można niemal z definicji powiedzieć, że nie powinieneś korzystać z metod magicznych.
aras785
Chodzi mi o przekazywanie zmiennych z kontrolera do widoku. Czy używać
  1. $this->view->zmienna = 'Cos';


czy

  1. $this->view->set('zmienna','Cos');


no i przy wyświetlaniu jest trochę brzydko czyli:

  1. $this->get('zmienna')['tablica'] //jeśli zmienna jest zmienną tablicową
Crozin
W takim wypadku tylko i wyłącznie get()/set().
Cytat
no i przy wyświetlaniu jest trochę brzydko czyli:
  1. $this->get('zmienna')['tablica'] //jeśli zmienna jest zmienną tablicową
Taki zapis jest jak najbardziej poprawny i nie ma w nim nic "brzydkiego". Wiem, że w PHP jest on dostępny od niedawna stąd może u osób związanych wyłącznie z PHP może wydawać się on nienaturalny, ale taka konstrukcja jest najbardziej poprawną formą.
aras785
Ok. W takim razie zostanę przy tym smile.gif

A może tablice zamieniać na obiekt i w ten sposób otrzymać:

  1. $this->get('zmienna')->key


Czy to się mija z celem? Pozdrawiam smile.gif
Crozin
Jeżeli miałbyś dokonywać konwersji wyłącznie w celu zmiany składni to tak, mija się to z celem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.