Najważniejszą rzeczą dla programisty w PHP, moim zdaniem, poza jego doświadczeniem jest jego zestaw narzędzi. To jest kod, który on/ona napisał wewnątrz i na zewnątrz, do tyłu i do przodu od niepamiętnych czasów.
Dla mnie, w tym przypadku, zaletę programu OOP jest jasne. Posiadanie klasy, o której wiesz, że zawsze będzie wyglądało tak, jak chcesz, za pomocą prostych metod, jest łatwiejsze zarówno dla ciebie, jak i członków zespołu, po prostu wywołujesz wiele funkcji statycznych. Chociaż można argumentować, że biblioteka funkcji satic obejmuje tym samym celom, moim zdaniem zajęcia są dużo łatwiejsze do odczytania i zrozumienia. Na przykład w mojej klasie niestandardowych sesji programista może spojrzeć na mojego kodu i zobaczyć,
$my_session = new session();
$my_session->start();
if (($session_errno = $my_session->error()) !== FALSE)
{
//DO SOMETHING BECAUSE OF A SESSION ERROR
}
i łatwo zrozumieć, że sesje w tej aplikacji są obsługiwane za pośrednictwem naszej klasie niestandardowych sesji, i powinien wrócić jakiś rodzaj sukcesu/porażki bez kiedykolwiek badanej biblioteki/klasy.Tymczasem wezwanie, takich jak ten,
session_start();
if (session_error())
{
//DO SOMETHING BECAUSE OF A SESSION ERROR
}
nie było jasne, że session_start()
nie jest domyślnym obsługi sesji PHP, ale że będzie wywoływać funkcje zdefiniowane w session_set_save_handler()
który został zawarty w jakimś mega listy globalna obejmuje które mogą nie być łatwe do zlokalizowania w dużej aplikacji. Nie jest również tak jasne, że session_error() jest funkcją, która zwraca błąd ustawiony przez niestandardową procedurę obsługi sesji, a funkcję, która może aktywnie szukać problemów z sesją w już wygenerowanej sesji i jest całkowicie niezależna od domyślnej sesji PHP.
To nie jest świetny przykład, ale uważam, że jest dobry. Nie wdawałem się w szczegóły dotyczące dobroci, która chroni dane od aplikacji w całości, dziedziczenia i wszystkiego, co czyni OOP użytecznym.
Ale szybko wyobraź sobie klasę, która uzyskuje dostęp do bazy danych MYSQL aplikacji. Dużo czasu poświęca się na zaprojektowanie klasy, aby używała przygotowanych instrukcji, rejestrowała błędy i zapewniała odpowiednią logikę programistom w razie potrzeby. Zespół może mniej martwić się problemami z dostępem do bazy danych, po prostu wywołując publiczne funkcje "dostępu do danych" klasy bez obawy o błędy krytyczne, złą logikę lub niebezpieczny SQL (zastrzyki i tym podobne).
Można tego dokonać za pomocą funkcji statycznych, takich jak sugerujesz, ALE każda funkcja w tej bibliotece statycznej jest narażona na działanie aplikacji jako całości, podczas gdy tylko funkcje publiczne i "BEZPIECZNE" są narażone na działanie aplikacji korzystającej z bazy danych obiekt dostępu. Programista nie może przypadkowo wywołać niebezpiecznej funkcji, która, gdyby nie została poprawnie zainicjowana przez inne funkcje, mogłaby spowodować poważne problemy, ani też programista celowo nie mógł pomijać błędów lub innych danych chronionych przez klasę, jak gdyby mógł za pomocą mnóstwa funkcji statycznych i zmiennych globalnych.
O ile dobra aplikacja może być zaprojektowana bez żadnych obiektów, dobry programista powinien cieszyć się użytecznością, rozszerzalnością i zabezpieczeniami, których obiekty zapewniają w razie potrzeby.
Wyjeżdżam z moją ostatnią metaforą. Obiekty są jak specjalistyczne maszyny i narzędzia wewnątrz fabryki. Podczas gdy w fabryce znajduje się wiele unikatowych narzędzi na linii montażowej, od prostych pras krawędziowych po maszyny CNC i zautomatyzowane roboty, stanowią one tylko niewielką część zespołu, który pomaga licznym pracownikom i kierownikom, naszym statycznym funkcje, wykonaj zadanie budowy lepszego samochodu, ciężarówki lub roweru.
co to są "funkcje losowe"? – Svisstack
** możliwy duplikat [functions.php vs OOP] (http://stackoverflow.com/questions/2392795/functions-php-vs-oop) i [Do czego służy punkt zajęć] (http://stackoverflow.com/questions/1993638/classes-whats-the-point) ** - Podsumowując: albo używasz OOP, albo nie. – Gordon
Pomyślałem, że klasa "Utilities"/"Helpers" była standardem w większości projektów OO: P. – Matt