![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 25.11.2003 Skąd: Białe Błota Ostrzeżenie: (0%) ![]() ![]() |
Tak wlasnie siedze i mysle sobie, bo chce przepisac swoja aplikacje z GOD classes na prawdziwe OOP. Chce aby kazda klasa reprezentowala jeden typ danych, np. klasa Articles ma metody tworzace obiekty klasy Article, ktora posiada z kolei metody zwracajace dane danego artykulu. Ale jest problem... Artykuly w bazie danych polaczone sa relacyjnie z Article_Type, oraz Category. I problem w tym, ze klasa Article_Type to tylko article_type z DB, Category to tylko category z DB. W templejcie potrzebuje wyswietlic artykuly wraz z ich kategoria oraz typem (np. test, recenzja czy cokolwiek innego). I nie wiem, jak mam polaczyc te obiekty. Moge oczywiscie zrobic wywolanie obiektu Category z Article, ale to za kazdym wyswietleniem danych tworzy jedno zapytanie do bazy o nazwe kategorii. Ma ktos jakis pomysl?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 16.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(hawk @ 2004-09-29 08:19:04) Ja np najpierw nauczyłem się obiektowości w C++, a potem zacząłem pisać w C. I nigdy nie miałem problemów z OOP. Za to miałem problemy z organizacją modułów w C (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) . To witaj w klubie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Tez zaczynalem od C++, aczkolwiek jeszcze wczesniej znalem Object Pascala. Zgadzam sie z przedmowcami, ze OOP swietnie sluzy do budowy srednich i wiekszych aplikacji. Do malych sprawdza sie tak samo dobrze, tyle ze w innych jezykach, bo jest bardziej intuicjne. Problem z php jest taki, ze skrypt wykonuje sie raz, a pozniej wszystko gubi i trzeba zapisywac albo w bazie, albo w sesjach. I to "psuje obiektowosc". Nie da sie zrobic takich rzeczy jak np. w Javie, ze piszesz sobie klase, przy kazdym polu dajesz @hibernate.property column="nazwa odp. kolumny w bazie danych" i pozniej z bazy wydobywasz od razy gotowy obiekt, nie bawisz sie w jakies SQLe itp. Zmieniasz jedno pole, dajesz update i masz wszystko ladnie odswiezone w bazie. To jest wlasnie Aspect Oriented Programming. Czy chociazby programowanie zdarzeniowe jak w C++ Builderze czy ASP.NET. Bez OOP ani rusz. Chcialem napisac kiedys swoj wlasny framework obiektowy do budowy aplikacji w php, ale w koncu sie wycofalem i robie go w C++. Dzieki temu wiele udogodnien mam niemal za darmo przy duzo wiekszej wydajnosci i na dodatek moge robic rzeczy, ktorych w php nigdy by sie nie dalo dobrze zrealizowac: - zabezpieczenie kodu zrodlowego - niezaleznosc od interpretera i bibliotek - mozna przeciez linkowac statycznie - "trwałosc" obiektow - wskazniki (jak jest trwalosc, to wskazniki nagle staja sie b. potrzebne) - dobry odsmiecacz (czymze jest marne zliczanie referencji php) - wielodziedziczenie (glownie do wyjatkow) - wielowatkowosc (no do apl. internetowych moze mniej przydatne, ale kto wie) - rozne zaawansowane struktury danych (STL) - tysiace dobrych bibliotek dla roznych zastosowan w tym do aplikacji rozproszonych (CORBA, RMI, RPC) i rownoleglych (PVM). - lepsza integracja z innymi programami, w tym syst. baz danych (nie spotkalem systemu, ktory by nie dawal API do C) - setki gotowych narzedzi takich jak kompilatory, debuggery, IDE itd. Jedyne czego brakuje to paruset klas dla ulatwienia pisania aplikacji WWW, ale wlasnie nad tym pracuje. Chyba latwiej dorobic takie klasy niz probowac implementowac wszystko co na gorze w php? Ale moze sie myle. Z drugiej strony troche trudniej uzyskac dobra przenosnosc, ale jest to mozliwe i trud sie oplaca. Zreszta przenosnosc wcale nie jest tak wazna po stronie serwera. Jednym slowem OOP rzadzi, tyle ze nie w php. (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) (( |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 22:20 |