Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Początki z obiektowym PHP
marcinpruciak
post
Post #1





Grupa: Zarejestrowani
Postów: 161
Pomógł: 9
Dołączył: 14.07.2008

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


Dopiero zacząłem przygodę z obiektowym PHP. Uczyłem się z książki 'Zaawansowane tworzenie stron www PHP5 Szybki start'.

Udało mi się wykombinować taki kod:

http://www.wklej.com.pl/show.php?what=20080812201428

Ma to służyć jako miniCMS, to są klasy do zarządzania podstronami.

Chciałbym się zapytać czy to jest wogóle obiektowo, bo mi się wydaje że to są zwykłe funkcje pogrupowane w klasy. 

Nie wiem czy rozumiem ideę obiektowego programowania.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Shili
post
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Ja mam parę uwag:

W konstruktorach masz stanowczo zbyt dużo.
Form obejdzie się i bez klasy i action - innymi słowy w konstruktorze powinno być tylko i wyłącznie method, bo bez tego obiekt jest bezużyteczny.
Z inputem podobnie. W konstruktorach masz moim zdaniem za dużo zbędnych danych, bez których obiekt poradzi sobie bez żadnego problemu. Konstruktor jest nie po to, żeby upychać wsjo jak leci.

Klasę abstrakcyjną w takiej formie można sobie spokojnie darować.
Aktualnie jest tak, że każdy element dziedziczy po niczym (się zrymowało, hehe). Nie wiem, mistrzem OOP nie jestem i raczej w najbliższej przyszłości nie będę, ale jakoś mi się to nie widzi.

W klasie abstrakcyjnej (tudzież w interfejsie - zależy od kilku rzeczy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ) mógłbyś zadeklarować na przykład metodę abstrakcyjną toString() którą masz w każdym elemencie. Ale jest to metoda publiczna - innymi słowy jakoś bardziej widzę tutaj interfejs niż klasę abstrakcyjną na razie.
Interfejs dlatego, że w aktualnym stanie te klasy nie mają nic wspólnego - jedynie metodę toString, która dodatkowo w każdej jest inaczej interpretowana. A to już domena interfejsu - są sobie klasy, mają jakieś metody o takich samych nazwach, ale inaczej się je implementuje.

Dla przykładu:
Masz kota i sweter z szorstkiej włóczki. Kot drapie i sweter drapie, prócz tego nie mają cech wspólnych - możesz dla nich obu zrobić interface z metodą drapie() (nie po angielsku, bo podejrzewam, że drapanie przez szorstki sweter nie będzie tak samo jak drapanie przez kota, poza tym to tylko przykład), ale nie ma sensu robić klasy abstrakcyjnej, w której będzie jedynie niezaimplementowana metoda. Przynajmniej moim zdaniem.
No chyba, że ta wspólna metoda jest prywatna lub chroniona, ale to inna bajka (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Ten post edytował Shili 14.09.2008, 20:10:19
Go to the top of the page
+Quote Post

Posty w temacie
- marcinpruciak   Początki z obiektowym PHP   12.08.2008, 19:19:44
- - wlamywacz   Niestety jest to tylko kod strukturalny zamknięty ...   12.08.2008, 20:00:31
- - dyniaq   No trochę lipa. Utwórz np klasę podstrona i w niej...   12.08.2008, 20:01:30
- - marcinpruciak   Zmieniłem to w jedną klasę podstrony.  Nie widzę ...   12.08.2008, 21:00:43
- - ayeo   Tak jak ktoś wyżej napisał, myślisz funkcjonalnie....   12.08.2008, 21:40:53
- - Cysiaczek   Nie, niestety nie chodzi o to. Przynajmniej nie wp...   12.08.2008, 22:05:48
- - qBK   W sumie nie wiem czy rozpoczęcie nauki programowan...   13.08.2008, 07:35:21
- - Crozin   @qBK w PHP5 nie ma var, jest private, protected, p...   13.08.2008, 13:40:46
|- - qBK   Cytat(Crozin @ 13.08.2008, 14:40:46 )...   13.08.2008, 19:49:27
- - marcinpruciak   Pomęczyłem się pół dnia i trochę już łapię. Zrobił...   13.08.2008, 15:37:19
- - Shili   Jak już się uczysz, to nabieraj od podst...   13.08.2008, 15:48:28
- - Crozin   Nie private var $abc, a private $abc   13.08.2008, 23:13:02
- - marcinpruciak   Trochę pomyślałem, pokombinowa...   22.08.2008, 11:32:37
- - Kicok   CytatNieźle jak na pierwszy kontakt z obiektowości...   22.08.2008, 13:32:04
- - f1xer   Abstrahując od twojego problemu, jeżeli ...   22.08.2008, 14:13:25
- - marcinpruciak   Tylko jak poradzić sobie z pętlą? Wszystkie przykł...   22.08.2008, 17:01:16
- - f1xer   jeżeli masz jusz dane w tablicy to tą ta...   22.08.2008, 17:26:53
- - marcinpruciak   Zedytowałem to tak: [PHP] pobierz, plaintext...   22.08.2008, 23:47:21
- - kbsucha   Zobacz w manualu opis funkcji mysql_fetch_assoc(),...   23.08.2008, 00:19:14
- - marcinpruciak   Udało się. Dzięki za sugestię....   28.08.2008, 22:44:36
- - Cysiaczek   Dla każdej strony robisz osobny obiekt? Moim ...   29.08.2008, 08:35:55
- - marcinpruciak   <P>Tylko że ja już mam książkę. "Zaawan...   29.08.2008, 10:47:40
- - wlamywacz   Musisz potraktować taką klasę jako obiekt a nie ty...   29.08.2008, 11:21:51
- - -=Peter=-   jak klase można potraktować jako obiekt? Klasa i o...   30.08.2008, 22:37:44
- - wlamywacz   Tak jest to łatwiej zrozumieć początkującym   31.08.2008, 10:56:43
- - marcinpruciak   A co powiecie na to? : [PHP] pobierz, plaintext ...   31.08.2008, 13:57:27
- - wrzasq   jesli chodzi o samo pojecie obiektowosci to juz le...   31.08.2008, 14:39:15
- - marcinpruciak   Czemu sądzisz że to dopiero zalą...   31.08.2008, 16:50:06
- - Crozin   Każdy formularz na stronie może być obiektem, ale ...   31.08.2008, 17:52:11
- - marcinpruciak   No tak, wiem o tym, ale ja robiłem klas...   31.08.2008, 18:26:57
- - wrzasq   powiem tak - do PHP nie warto inwestowac w ksiazki...   31.08.2008, 20:06:28
- - Fixus   co do tytułu "PHP5: Zaawansowane progra...   31.08.2008, 20:12:54
- - Crozin   Input dziedziczący po Form? Jakoś mi się to nie wi...   31.08.2008, 21:41:30
- - Fixus   @Crozin - może faktycznie mnie poniosło z tym dzie...   31.08.2008, 21:48:46
- - marcinpruciak   Kod po poprawkach, zrobiłem jedną klasę z danymi, ...   12.09.2008, 22:33:34
- - Crozin   1) HTML_Element powinno być klasą abstrakcyjną i j...   13.09.2008, 07:49:31
- - marcinpruciak   [PHP] pobierz, plaintext <?php abstract cl...   14.09.2008, 16:56:55
- - marcio   W jakim sensie sam sie ucze ale ja bym to dal do i...   14.09.2008, 19:30:22
- - Shili   Ja mam parę uwag: W konstruktorach masz stan...   14.09.2008, 20:01:22


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: 14.10.2025 - 10:08