Czy magiczne metody są najlepszą praktyką w PHP? [zamknięte]
Czy magiczne metody są najlepszą praktyką w PHP?
4 answers
Nie sądzę, aby magiczne metody były najlepszą lub najgorszą praktyką: w zależności od tego, co chcesz osiągnąć, możesz ich używać lub nie... Chodzi mi o to, że nie musisz dostosowywać kodu, jak to możliwe, aby z nich korzystać, ale jeśli musisz, nie ma żadnego problemu.
Jeśli masz obiekt z 3 i tylko 3 atrybutami, nie musisz używać magicznych setterów/getterów, ale w niektórych zaawansowanych przypadkach są one świetnym sposobem na wykonywanie bardzo złożonych rzeczy (Systemy ORM itp...)
Może niektóre z nich są Nie wiem, ale większość z nich nie jest.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-23 12:03:23
Cons
-
Wyszukiwanie tekstu nie znajduje funkcji
-
System jest trudniejszy do zrozumienia , szczególnie dla początkujących
-
Narzędzia Refaktoryzacyjne mogą częściej zawodzić
Ogólnie rzecz biorąc, magiczne metody robią rzeczy za kulisami i programista może nie zdawać sobie sprawy, że to się dzieje, co utrudnia debugowanie.
Podczas wyszukiwania funkcji (lub innych symboli) nie można znaleźć wszystkich dopasowania usunięcie starego kodu staje się koszmarem, a ten strach może spowodować, że martwy kod będzie gromadzić się w bazie kodowej. Jeśli martwy kod zostanie usunięty, może spowodować pęknięcie w nieznanych miejscach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-27 11:13:30
Chociaż niektóre z tych magicznych funkcji są zalecane przez Google:]}
Unikaj pisania naiwnych seterów i getterów
Podczas pisania klas w PHP, możesz zaoszczędzić czas i przyspieszyć swoje skryptów poprzez bezpośrednią pracę z właściwościami obiektu, a nie pisanie naiwnych seterów i geterów. W poniższym przykładzie pies Klasa używa metod setName() i getName() do uzyskania dostępu do nazwy własność.
class dog { public $name = ''; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } }
Zauważ, że setName () i getName () nie robi nic poza przechowywaniem i zwraca odpowiednio właściwość name.
$rover = new dog(); $rover->setName('rover'); echo $rover->getName();
Ustawienie i wywołanie właściwości name bezpośrednio można uruchomić Do 100% szybszy, a także skraca czas rozwoju.
$rover = new dog(); $rover->name = 'rover'; echo $rover->name;
Oryginalny link: http://code.google.com/speed/articles/optimizing-php.html
Wersja zarchiwizowana: https://web.archive.org/web/20120208060457/http://code.google.com/speed/articles/optimizing-php.html
W każdym razie, te metody mogą nie być wydajne, ale nie są w ogóle przestarzałe.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-01 15:38:57
Nie wydaje mi się. Mój IDE nie jest w stanie pokazać mi "podpowiedzi" dla magicznego settera i getterów. Chociaż kod jest czasami trudniejszy do debugowania.
Wolę ich nie używać, lepiej generować potrzebne metody (jak wiele setterów i getterów) przez moje ide.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-25 10:27:01