Przejście z pisania strukturalnego na obiektowe.

0

Witam,

Programuję w php od kilku lat, zrobiłem wiele różnych stron. Mam gotową strukturę katalogów i plików, a także panel admina, który wykorzystuję do tworzenia stron. Ale.. to wszystko robię strukturalnie. W miarę szybko w tej chwili zbuduję nawet zaawansowane strony. Z przenośnością napisanych już wcześniej funkcji nie ma tak wiele problemu, ale trzeba zazwyczaj przenosić kilka plików razem z tabelami z bazy.
Wiele razy natykałem się na Frameworki i wiele osób wychwala, że lepiej się pisze strony. Ale ja nie mogę się przyzwyczaić. Może dlatego, że nie znam do końca pisania obiektowo bo znam to tylko z analiz przykładów.
Słyszałem też, że strony napisane w OOP spada czasami ich wydajność ponieważ obszerne klasy muszą ładować się do ramu, a przy dużym ruchu może być to kłopotliwe. Natomiast zaleta pisania strukturalnie to serwis działa bardzo szybko i bez większego obciążenia dla serwera.
Zastanawiam się nad przepisaniem tego mojego systemu, który pomaga w pisaniu stron na OOP, ale nie czuję się na siłach.
Może ktoś polecić jakąś książkę z programowania OOP w php, która nauczy mnie przejść z pisania strukturalnego na obiektowe, a także aby nauczyła tworzyć dobrze zbudowane aplikacje internetowe, które są SZYBKIE i bezpieczne. Chciałbym też wiedzieć jak zbudować strukturę strony takiej jak facebook, aby wytrzymała nawet takie obciążenie (żeby dokładać najwyżej serwery).
Fajnie są zrobione moduły w PrestaShop, każda funkcjonalność działa na modułach co mi się bardzo podoba. Jeden moduł wpływa na inne moduły i zachowanie całej strony, a moduł zawarty jest w jednym katalogu (nie jest rozwalony po wielu katalogach).
Interesowałem się frameworkiem CI, tylko nie wiem czy się w niego wgłębiać, bo zapoznanie się z kodem napisanym przez kogoś wiele czasu zajmuje. Więc może lepiej by było napisać coś swojego gdzie będzie się znało każdą linijkę.
Mam pytanie również jaki edytor będzie najlepszy do pisania w OOP ? Aktualnie wiele lat siedzę na kED i bardzo mi się podoba ale brakuje obsługi SVN ewentualnie FTP.

Proszę o jakieś porady.

1

PHP to akurat ma problemy z wydajnością w ogóle, z uwagi na specyfikę jego działania. Ale oczywiście - im więcej stworzysz warstw abstrakcji, tym będzie gorzej. Wszelkiej maści ORM też w wielu wypadkach mogą być gorsze niż ręczne pisanie zapytań SQL.

CodeIgniter jest fajny, ale pamiętam, że kiedyś zachowywał wciąż zgodność z PHP4, więc jego obiektowość pozostawiała wiele do życzenia - i pod tym względem lepszy był jego fork, Kohana. Która w wersji 3.0 zrobiła się już zupełnie do CI niepodobna. Ale w Kohanie 3 jest wzorzec HMVC - da się zrobić tak, aby każdy element systemu był zasadniczo w jednym katalogu i tam sobie miał swoje kontrolery, modele i widoki.

Nie potrafię powiedzieć, czy pisanie wszystkiego samemu jest lepsze - gdy nauczyłem się Kohany, to po prostu wiele rzeczy odpadło, które da się napisać... ale już są zrobione, więc nie ma potrzeby. A w razie czego zawsze można sobie moduły wbudowane rozszerzyć czy zastąpić własnymi. Tutaj też pytanie do Ciebie - wolisz np. używać PEAR, czy własnych rozwiązań? Jeśli piszesz samemu, możesz spróbować napisać samemu, znam ludzi dla których to jest wygodniejsze niż uczyć się narzędzi zewnętrznych.

Co do OOP - a masz jakieś pojęcie o programowaniu obiektowym? Wiesz jaki jest sens obiektów, klas, dziedziczenia, hermetyzacji i tych innych powiązanych z tym pojęć? Wiesz jaki jest sens MVC? Bo od tego trochę zależy rodzaj książki. Konkretnej nie polecę, bo obiektowość poznałem w wydaniu Javy i C#, a potem z tą wiedzą przyszedłem do PHP. Wiedzę o obiektowości w PHP, MVC i paru innych elementach to chyba zbierałem z różnych porozrzucanych po sieci artykułach. Budowa aplikacji skalowalnych to nie tylko PHP, ale i zagadnienia w rodzaju memcache, replikacja baz danych, load balancing, nie sql-owe bazy danych i dużo rzeczy związanych raczej z "IT" niż programowaniem.

Co do środowiska - przesiadłem się ostatnio na Aptanę z Notepada++ i jak na razie jestem dość zadowolony. Oprócz tego, że jest trochę ociężała na starcie.

0
  1. Potrzebuję się nauczyć programowania obiektowego. Proszę o jakąś książkę, która dobrze wprowadzi mnie do OOP ze strukturalnego. Najlepiej uczę się na przykładach dlatego fajnie by było gdyby nauka OOP opierała się na praktycznym przykładzie.
  2. Następnie chcę wybrać jakiś framework. Główne wymagania to:
  • szybkość
  • możliwość tworzenia modułów w jednym folderze, żeby nie były rozwalone po całym skrypcie, napisane wcześniej moduły chcę wykorzystywać w innych projektach, czyli niezależność
  • możliwość tworzenia szablonów strony z możliwością nadpisywania plików domyślnych, czyli szablon może zawierać nowe pliki, które są dopasowane do struktury strony i które się nadpisują jesli istnieja w szablonie. Umożliwi to całkowitą edycję strony w zależności od wczytanego szablonu.
  • cache
  • czytelność kodu
  • dobra dokumentacja oraz dobra pomoc techniczna w razie problemów
  • nowoczesność
  1. Ostatnio chciałem sprawdzić popularne strony, które są napisane w jakichś znanych frameworkach, okazuje się, że większość znanych stron jest napisana strukturalnie lub na własnych autorskich rozwiązaniach.
0

temat dosc stary, ale mysle ze warto go odkopac...
mam podobny problem, do tej pory tworzylem glownie strukturalnie, moj najwiekszy projekt - CMS - napisany strukturalnie(+kilka klas w php4 ale to tylko pseudo-obiektowka). Przechodzenie na obiektowe idzie mi dosc opornie, podobnie jak Tobie, ciezko mimo ze podstawy juz nieco liznalem....tworze juz proste i sredniozaawansowane klasy, w nowym projekcie, ale jakos nie mam przekonania ze to taki krok milowy, ze probuje tworzyc w oop...mam wrazenie ze klasy te wygladaja dosyc pokracznie..;]

wiele ksiazek traktuje problem oop, ale jak sie zaglebic w wiele z nich okazuje sie ze traktuja temat pobieznie, np 'php i mysql vademecum programisty wyd 3' - masa listingow napisanych strukturalnie....
dodatkowo, nie spotkalem sie z kursem w sieci ktory fajnie na prostych i bardziej zaawansowanych przykladach tlumaczylby obiekty, nie wiem, moze za slabo szukalem

moj opor bierze sie chocby stad (jak u Ciebie), ze obiektowka wydaje sie jakby narzucala mase nadprogramowego kodu....jak widze 10 linijek albo nawet 20 obiektowki ktore daloby sie zapisac w 3ech strukturalnie to nie potrafie sie pozbyc odczucia ze oop generalnie komplikuje nam zycie zamiast ulatwiac, 10 razy zastanawiam sie po jaka cholere do tego stopnia rozbudowywac kod?

jest to na pewno jedna z przyczyn ktora moze (nie musi) czynic kod mniej wydajnym, i tu sie z Toba w 100% zgadzam...jaka korzysc z tego ze cos jest obiektowe skoro chodzi wolniej? bez sensu, wiadomo ze patrzac od tej strony lepiej wybrac cos co chodzi szybciej

kolejna sprawa: fakt zapisania danego projektu strukturalnie, nie jest jednozaczny z tym ze jest on Od razu skazany na porazke, wg mnie jezeli projekt zorganizowany jest postaci modulow, w sposob przemyslany, tak by latwo bylo nim zarzadzac i go rozwijac to nie powinien on byc az takim koszmarem w porownaniu ze swoim obiektowym odpowiednikiem, jak zwolennicy obiektowosci nieraz opisuja

kolejna sprawa: nieraz jak przygladam sie klasom to mysle ze niejedna z nich daloby sie zapisac w postaci funkcji, jej metody rowniez w postaci funkcji uzupelniajacych i wrzucic do jednego pliku ktory bylby opakowaniem dla funkcji tak jak klasa dla metod, wiec po co nam klasa, skoro nazewnictwo i tak musimy sami stworzyc

kolejna sprawa: w oop wiele rzeczy wykonuje sie niejawnie, tzn. automatycznie o czym musimy wiedziec z zalozen samego oop jak np metody magiczne, metoda clone() kopiuje obiekt, a przypisanie do zmiennej tworzy referencje(nielogiczne z innymi przypisaniami), albo to ktora linia wywolala dana reakcje skryptu, jest o wiele trudniejsze do wykrycia niz w przypadku strukturalnego parad., np metoda autoload(), laduje pliki ale nie widac w miejscu wywolania jakie, ciezko sie przestawic majac przyzwyczajenia ze strukturalnego paradygmatu, zupelnie inna bajka, mnie to po prostu drazni

to wszystko sprawia ze trudno mi sie przesiasc na obiektowke, bo nie widze za bardzo tych 'wielkich' korzysci....mozliwe ze jeszcze za malo wiem, za malo rozumiem
niektore zalety oop sa dla mnie widoczne juz teraz jak chocby hermetyzacja (zapobieganie nadpisania wartosci kluczowej zmiennej), dziedziczenie(fakt, funkcja tego nie potrafi, zalaczanie oddzielnego pliku tez tego nie da, trzebaby powtarzac kod i tworzyc nowe pochodne funkcje), ale to chyba ciagle za malo

mozliwe ze nauka ktoregos framwork'a od a do z zmieni calkowicie moje spojrzenie

à propos framwork'ow jezeli juz o nich mowa polecilbym Ci na poczatek kohana w wersji 2 lub 3, ponoc dla poczatkujacych jest w sam raz, jest polskie wsparcie, jest ciagle rozwijana, CI niebardzo, przede wszystkim napisany strukturalnie, nawet najnowsza wersja(ponoc sciema), jego rozwoj niepewny(wczesniej slyszalem ze w ogóle nie jest juz rozwijana na rzecz kohana'y), symfony i zf trudne jak na poczatek

z ksiazek do oop wiele ludzi sobie chwalilo 'php5 zaawansowane programowanie', o wiele bardziej profesjonalana pozycja od 'php i mysql....', znalezli sie tez i krytycy ale byli w mniejszosci.....jak dla mnie ksiazka ma swoje wady, ale o lepszej pozycji nie slyszalem...na pewno kladzie duzy nacisk na obiektowosc w php5

0

Mam książke Programowanie obiektowe w PHP5 (Hasin Hayder) - samo OOP to jakiś 80 stron, a reszta to że tak ujmę dodatki. Nie jest to szczyt możliwości, ale zerknij na nią w Empiku.

Co do programowania obiektowego i tworzenia wielu klas to nie jest tak źle jak opisał to autor tematu. Nie trzeba ładować wszystkich klas na raz, a w dodatku są teraz tak szybkie komputery i internet że to nie robi problemów. Tak naprawdę obiektowe programowanie zostało stworzone dla języków takich jak C++ lub Java, ponieważ to w nich mamy np.: punkty, które mają te same funkcje, metody i parametry (chodzi o obsługę).

Ja osobiście działam na notepad++ i jakoś nie mogę przekonać się do frameworków bo zdaje mi się że one dodają swoje pliki do całego projektu, czego nie lubię (ale mogę się mylić). A co powiecie o Eclipse for PHP ?

0

Ja polecam NetBeans :] W najnowszej becie jest trochę bajerów jeśli chodzi o HTML/ CSS/ JavaScript i wsparcie dla kilku dodatkowych frameworków PHP (chyba) - http://netbeans.org/community/releases/73/

1 użytkowników online, w tym zalogowanych: 0, gości: 1