" Prawdziwy geniusz drzemie w umiejętności oceny niepewnych, ryzykownych i niezgodnych informacji." (Winston Churchill)
PHP jako jeden z nielicznych jezyków, daje nam taką dużą swobodę wyboru pomiędzy programowaniem zorientowanym obiektowo, a strukturalnym. Wielu programistów korzysta z tego drugiego, od czasu, gdy strony internetowe można tworzyć w ten sposób (ten tag, później kolejny i kolejny). Urozmaicanie kodu PHP poprzez wstawki HTML jest dużo bardziej zrozumiałe i "naturalne". Stąd programiści często tworzą własny styl programowania, oparty na filarach opisanych powyżej.
Jeśli to początek Twojej przygody z PHP, to zapewne programowanie strukturalne jest jedynym narzędziem jakie teraz posiadasz. Warto poświęcić trochę czasu na zaznajomienie się z technikami i sposobami pracy innych. Z pewnością spotkałeś się z opiniami na forum lub grupach dyskusyjnych dotyczących "object bloat" [napchania obiektami]. Bardzo możliwe również że natrafileś na artykuły typu "programowanie zorientowane obiektowo w PHP", lub korzystałeś z bibliotek napisanych w oparciu o klasy. Mimo wszytko istnieje szansa, że nie wiesz kiedy, gdzie oraz dlaczego powinieneś używać technik programowania zorientowanego obiektowo.
Z pewnością jest wiele głosów po obu stronach barykady, głoszące hasła typu "Obiekty są złe", "Obiekty są dobre", próbujące przekonać Cię do ich zdania. Zadaniem tego artykułu nie jest wybranie drogi za Ciebie, tylko wskazanie możliwych rozwiazań. Zostaną przedstawione wady i zalety obydwu technik wraz z przykładami kodu, który mam nadzieje ułatwi Ci zrozumienie tego o czym piszę.Oto przykład bardzo prostego kodu strukturalnego:
<?php print "Hello, world."; ?>
Tutaj zaś mamy przykład programu zorientowanego obiektowo, który robi dokładnie to samo:
<?php class helloWorld { function myPrint() { print "Hello, world."; } } $myHelloWorld = new helloWorld(); $myHelloWorld->myPrint(); ?>
Zadaniem tego artykułu, nie jest przyblizanie Ci metody programowania obiektowego, poza przykładami klas. Jeżeli szukasz dobrego wprowadzenia w świat programowania OO, użyj wyszukiwarki Google. Znajduje się tam mnóstwo dobrych artykułów (no i parę złych), wystarczy tylko poszukać.
Z tym object-oriented i "zorientowany obiektowo" to nie jest tak prosto jak mówisz u podstaw OP i OOP leży bowiem co innego. Jaki jest podstawowy i niepodzielny, najniższy poziomowo element OP i OOP? W OP jest to proste - zawsze abstrakcyjny Object. Wszystkie dane, struktury są pochodną tej klasy. W OOP jest to właściwie nie do określenia, gdyż klasy są naszym dziełem i ewentualnie możemy taką funkcjonalność próbować wdrożyć. Stąd Java czy Smalltalk to OP a C++ "tylko" OOP.
Tekst jest bardzo dobry, dla mnie dosyć przydatny.
Mam tylko jedną małą uwagę - nie ma czegoś takiego jak programowanie "zorientowane obiektowo". Taki termin występuje co prawda w języku angielskim (Object-oriented programming), lecz tłumacząc na polski mówimy poprostu "programowanie obiektowe". W jęz. angielskim jest dodane słówko "oriented" ponieważ w termin mógł by byc mylony z "programowaniem obiektu".
Pozdrawiam
Art naprawde fajny.
Programuje juz kilka lat, siedze glownie na PHP4 i jak dotad bardzo rzadko korzystalem z OO. Po przeczytaniu w wielu godzin przemyslen nad swoim dotychczasowym kodem stwierdzam ze niektore z nich faktycznie mozna bylo duzo prosciej i lepiej napisac w OO...
Polecam przeczytac
tak. to jest to. nie wiedziałem połowy z tych rzeczy a przecież programuję już kilka lat... Więcej takich artykułów poproszę!
pozdrawiam!
Bardzo przydatny artykuł... dał mi wiele do myślenia. Osobiście jesteś zwolennikiem kodu proceduralnego, ale po głębszych przemyśleniach mogę stwierdzić, iż nie wszystko trzeba pisać "na szybko", dzieki za arta :)
pewnie zaczne flejma, ale niech se autor artykułu zrobi w oscommerce drzewko kategorii skladajace sie z kilkunastu tysiecy galezi... i wtedy pogadamy o optymalizacji