![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 12 Pomógł: 0 Dołączył: 31.08.2006 Skąd: Stalowa Wola Ostrzeżenie: (0%) ![]() ![]() |
Witam,
dopiero zaczynam przygodę z obiektowym php'em, a do tej pory tworzyłem stronki proceduralnie. Przeczytałem kilka kursów, przejrzałem kilkadziesiąt stron książki do programowania obiektowego w php (http://helion.pl/ksiazki/php5zp.htm), ale w zasadzie oprócz poznania w miare dobrze pojęć mi nic to więcej nie dało. Postanowiłem więc porpostu mniej więcej przygotowac sobie zarys aplikacji, którę chcę stworzyć i się za nią zabrać próboując zrobić to obiektowo. Jednak zatrzymałem się już na samym początku. Nie do końca wiem, jak zacząć clase. Dlatego chciałbym prosić o jakiś adres strony, na której znajduje się w miare prosty sposób wykonana jakaś strona obiektowo. Oczywiście mógłbym wziąć takie postnuke i analizować linijka po linijce, ale wątpie, abym tak szybko sie w tym połapał. Potrzebuję czegoś bardziej ludzkiego i prostrzego. Może ktoś ma gdzieś jakąś swoją starą stronę wykonaną obiektowo i zechciałby udostępnić jej kod źródłowy? (prosiłbym tylko, o to, aby w miare możliwości wykonana ona była w php5) Lub, jeśli ktoś ma czas, aby podpowiedział jak rozwiącać taki przykładowy problem: Załóżmy, że mamy jedną ogromną klasę "Tresci", a w niej chcecie umieścić podklasy Artykuły, Newsy, Recenzje itp. I teraz jak się do tego zabrać? Czy już w klasie "Tresci" do konstruktora wywalić polecenie pobrania z bazy pierwszego artykułu, badź news'a? Czy może robić to osobno w każdej podklasie? Jak wykonać konstruktor pobierający odrazu elementy z bazy danych? Łączyć się z bazą standardowo? Czy wykorzystać obiektowa bibliotekę mysqli? Czy tworzyc uchwyt w konstruktorze klasy Treści, czy zapisać metody obsługi bazy w innej klasie i włąnczyć go do bazy Tresci? Bybym wdzięczny za wszelkie rady, lub delikatne sugestie. Bardzo jednak bym prosił, o to, aby ktoś w miare możliwości udostępnił mi jakiś swój stary projekt strony zrobiony obiektowo w php5... Z góry dziękuję. Ten post edytował l05i3k 2.11.2007, 16:52:21 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 12 Dołączył: 27.01.2007 Skąd: north Poziom: 158 Tytuł: Miszcz Ostrzeżenie: (0%) ![]() ![]() |
Cytat Zanim ja pojalem obiekty i cala reszte to minelo 4-5lat, tak ze jestes w lepszej sytuacji, masz internet, dostep do dobrych ksiazek itp, to po prostu trwa troche. Heh, programowanie proceduralne to tak jakbym sie cofnął o 3 miesiące w czasie, teraz jak zaglądam do tamtejszego kodu to dziwię się jaki byłem niechluj i zastanawiam sie czemu nie korzystałem z php 5 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) poczytaj se o MVC (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) MVC to przyklad sposobu na "obiektowe napisanie strony" pozniej przeczytaj sobie 2 rozdzial manuala symfony: http://www.symfony-project.com/book/1_0/02...-Symfony-s-Code jest tu opisane w praktyce jak sie stosuje mvc (jak symfony stosuje mvc) MVC jak na początek przygody z programowaniem obiektowym to chyba trochę za wiele (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) Spróbuj zrobić tak żeby było wygodnie i z zachowaniem umiaru. Pamiętaj o zasadzie kapsułkowania (rozdzielania zadań do mniejszych podjednostek) i strzeż się od przedawkowania tejże zasady. Ja bym zrobił to tak: class DBDriver{} Tutaj dajesz obsługę mysql - czyli przechwytywanie błędów, zabezpieczanie przed SQLInjection, wykonywanie kwerend, łączenie i rozłączanie. class Contents {} Ta klasa przechowuje referencję do DBDriver, obsługuje operacje wspólne dla klas dziedziczonych (czyli np. głosowanie, komentowanie) class Article extends Contents {} Ta klasa ma te metody, które nie mogą być użyte w klasie News class News extends Contents() {} Ta klasa ma te metody, które nie mogą być użyte w klasie Article Spróbuj napisać swój kod jak najbardziej abstrachując (chyba tak sie to pisze (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) - tworząc interfejsy, po których nie można poznać że używasz bazy danych. Tak naprawdę proponowałbym ci nie dzielić dane na klasy, ale części aplikacji np. połączenie z bazą, operacje na newsach, wyświetlanie, śledzenie błędów. Spróbuj może opisać jaśniej swój problem. Ten post edytował carbolymer 10.11.2007, 19:47:49 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 8.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tak naprawdę proponowałbym ci nie dzielić dane na klasy, ale części aplikacji np. połączenie z bazą, operacje na newsach, wyświetlanie, śledzenie błędów. Spróbuj może opisać jaśniej swój problem. Dlaczego nie dzielic danych na klasy? W Javie, ktora jest typowo obiektowym jezykiem nawet takie typy danych jak liczba (Integer), ciag znakow (String, StringBuffer) to obiekty. Przeciez, gdyby programowie obiektowe polegalo na samej agregacji dzialan do odrebnych klas to by nic z tego nie bylo - kod proceduralny ubrany w klasy. Jezeli obiekty konkretyzuja obiekty na wskutek wywolan swoich metod i przekazuja innym obiektom te rezultaty to chyba wlasnie dopiero ma sens. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 12:26 |