Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przykład obiektowo napisanej strony..., Gdzie możę znaleźć prosty przykład obiektowo zrobionej całej strony?
l05i3k
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
carbolymer
post
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)

Cytat( @ 3.11.2007, 15:50:00 ) *
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
Go to the top of the page
+Quote Post
Helios
post
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 8.07.2006

Ostrzeżenie: (0%)
-----


Cytat(carbolymer @ 10.11.2007, 20:43:06 ) *
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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 12:26