[klasy] ktoś to używa?

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.

Czy używasz klas w php?

tak
9
69%
nie
4
31%
 
Liczba głosów: 13

the_foe
Przelotem
Przelotem
Posty: 295
Rejestracja: pt sty 31, 2003 12:53 pm
Lokalizacja: Wałbrzych
Kontakt:

[klasy] ktoś to używa?

Post autor: the_foe »

jestem juz średnio zaawansowanym koderem php, a przyznam sie, że niogdy nei użyłem zadnej klasy. Czytałem tekscik o klasach na tej stronie - ale mowiac prawde nei zrozumialem na czym polega ich funkcjonalnosc.
Mozecie mi wyjasnic, na chlopskich przykladach, jak pisac klasy, i dlaczego w ogole warto pisac klasy?
A moze nie warto?
iniside
Działa
Działa
Posty: 1025
Rejestracja: ndz gru 01, 2002 7:40 pm
Lokalizacja: Małomice
Kontakt:

Re: [klasy] ktoś to używa?

Post autor: iniside »

Clasy w PHP to taka prymitywna obiektowosc. Owszem jak niechce nie musisz. Ale w klasach mozesz sobie wygodnie grupowac funkcje do klasy kalkulator funckje zwianzane z liczniem na ten przykład. Bardzo to pomaga przy dużych projektach i pozwala nad nimi łatwiej zapanować... Przykłady niech poda ktoś inny bo ja nie wiele już pamiętam :)
wixor
Przelotem
Przelotem
Posty: 336
Rejestracja: śr gru 31, 2003 10:18 pm
Lokalizacja: Wrocław

Re: [klasy] ktoś to używa?

Post autor: wixor »

Jeżeli sładujesz dane w XML-u i masz uniwersalny format, który pozwala ci zapamiętać wszystko, np:[xml]<entry id="( wartość z uniqid() )"><param name="( coś tam )">( wartosć parama )</param><param (....)> (........) </param>(........)</entry>[/xml]itd. to robisz kasę do obsługi tego formatu, która ma np. takie metody:[php]<?php
$db->load($filename);
$db->save();
$db->listentry(); //zwraca id-ki wszystkich entry z db
$db->set($entry,$param,$value);
$db->get($entry,$param);
$db->listparam($entry); //zwraca name-y wszystkich param-ów z $entry
?>[/php]Możesz teraz mieć w jednym skrypcie mnóóóstwo otwartych baz danych i masz zapewnioną wygodną obsługę. Co więcej: Możesz tworzyć klasy pochodne od klasy XMLDB, np klasę News:[php]<?php
$news->load($filename); //metoda odziedziczona!
$news->save(); //metoda odziedziczona!
$news->get($time); //zwraca pięć newsów wstecz od $time od razu sformatonane, do zaechowania na stronę.
$news->add($author,$title,$content); //dodaje newsa do db
?>[/php] Oczywiście - możnaby to robić na funkcjach i przekazywać im parametr $db. Czym właściwie różnią się takie podejścia? niczym! Wezmę jako przykład C/C++. Podczas komplikacji kodu C++ powstaje najpierw kod C i z niego dopiero powstaje kod assemblera, który po assemblacji daje plik wynikowy (najczęściej a.out, lub ELF ;) ). Dzięki temu można stwierdzić jak wygląda implementacja obiektowości. A wygląda prymitywnie: zmienne klasy są pakowane do struktury, nazwy metod są lekko transformowane i do listy argumentów na pierwsze miejsce dodaje się wskaźnik do struktury! Programiści C wymyślili to już baaaardzo dawno temu, a praktyczne zastosowanie możemy znaleźć np. w kodzie Linuxa.(patrz -> struct file_operations). Cała kontrola dostępu do danych jest realizowana na poziomie parsera! tzn. jak ów widzi, że ktoś się próbuje z zewnątrz odwołać do zmiennej prywatnej to wywala errora i już! użycie prostej arytmetyki wskaźników pozwala na całkowite ominięcie tego "zabezpieczenia". Za używaniem klas przemawia ich wygoda. Kiedy mamy np. uchwyt socketa to wygodniej jest pisać [php]<?php $socket->send("GET / HTTP/1.1\n"); ?>[/php] niż [php]<?php send($socket,"GET / HTTP/1.1\n"); ?>[/php]. Wynik i tak będzie ten sam. Widzimy tutaj dobitnie, że klasy są swoistą nakładką na rzeczywistość. Na ich niekożyść wpływa zdecydowany spadek wydajności spowodowany ich używaniem. Niestety, aby ogarnąć większe projekty ich użycie jest niezbędne.
Hygin
Moderator
Posty: 650
Rejestracja: wt gru 31, 2002 10:29 pm
Lokalizacja: Wrocław
Kontakt:

Re: [klasy] ktoś to używa?

Post autor: Hygin »

Wiktor, z Twojego postu powinno się artykuł zrobić...
Riklaunim
Nowy
Nowy
Posty: 180
Rejestracja: pt mar 14, 2003 2:33 am
Kontakt:

Re: [klasy] ktoś to używa?

Post autor: Riklaunim »

Ja piszę teraz swój CMS i moduły są klasami i dostosowanie modułu do innego CMSa trwa 5 minut :) Klonowanie modułu 1 :)
Killer
Posty: 10
Rejestracja: śr lip 09, 2003 7:44 am

Re: [klasy] ktoś to używa?

Post autor: Killer »

Jednym z dobrych przykładów na wykorzystanie klas jest skrypt forum invisionpower board 1.3 lub 2.0 - polecam, ponieważ to ciekawa lektura i wiele rzeczy można wywnioskować :)
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

Re: [klasy] ktoś to używa?

Post autor: Dreen »

a ja nie lubie klas :x przynajmniej narazie pozniej chyba bede musial
viraptor
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn cze 28, 2004 12:58 pm
Kontakt:

warto

Post autor: viraptor »

Zalezy do czego mialy by byc uzywane. Jesli piszecie proste skrypty to nie potrzeba wam. Ale jesli chcecie cos naprawde ciekawego napisac, to klasy sa pomocne.
1. Pomyslcie np. o identyfikacji obiektow. Ladujesz do takiej tablicy kilka obiektow i nie obchodzi was jak sa zbudowane, wiecie za to ze dla kazdy obsluguje metode get_signature, wiec jesli chcecie uzyskac sygnatury piszecie tylko:
foreach($objects as $obj) {
print $obj->get_signature;
}
A teraz wyobjazcie sobie to w jezyku proceduralnym:
foreach($objects as $obj) {
switch gettype($obj)...... i tyle case'ow ile mozecie miec typow
}
i co jest prostsze?
2. class Aaa extends Bbb {} to mozna zaimplementowac jako normalne array'e, ale teraz pomyslcie o wszystkich funkcjach rekursywnych ktore trzeba napisac, zeby znalezc szukana metode u jakiegos pradziadka funkcji
3. Czasem macie duzo obiektow - czy warto dla kazdego utrzymywac osobne funkcje? To juz nie jest $obj->value() i value($obj), bo jesli macie kilka obiektow, z ktorych chcecie uzyskac jakas wartosc ogolna, to trzeba napisac funkcje objA_value($obj1); objB_value($obj2); objC_value($obj3); A czemu nie po prostu $obj1->value(), $obj2->value(), $obj3->value ?

Chyba wystarczy tych powodow. Klasy sa uzyteczne, a czy potrzebne, to juz sprawa kazdego osobnego projektu.
ODPOWIEDZ