2010-11-10 11:23:30

Programowanie obiektowe w PHP

DziÄ™ki programowaniu obiektowemu możemy tworzyć rozbudowane programy w uporzÄ…dkowany sposób. Umożliwia nam to podziaÅ‚ programu na odrÄ™bne części – klasy. W klasie wyodrÄ™bniamy fragmenty programów, które sÄ… jakÄ…Å› logicznÄ… caÅ‚oÅ›ciÄ…, odpowiadajÄ…cÄ… za jednÄ… funkcjonalność, albo jeden spójny zbiór danych.

Ta logiczna caÅ‚ość może być wykorzystana wiele razy w jednym programie, jak również w innych programach. W miejscu, gdzie chcemy użyć danÄ… klasÄ™, tworzymy obiekt tej klasy. Obiektów może być kilka. Stosujemy je wszÄ™dzie tam, gdzie potrzebna jest nam dana funkcjonalność, jeżeli tÄ™ funkcjonalność musimy zmienić, robimy to w jednym miejscu – w definicji klasy. Skutki tej zmiany bÄ™dÄ… widoczne wszÄ™dzie tam, gdzie wystÄ™pujÄ… obiekty tej klasy.

Podobna sytuacja wystÄ™puje w przypadku, gdy w programie wystÄ…pi jakiÅ› bÅ‚Ä…d. Ten sam bÅ‚Ä…d może wystÄ…pić w wielu miejscach, ale dziÄ™ki temu, że program jest oparty na klasach i obiektach tych klas, to przyczyna bÅ‚Ä™du wystÄ™puje tylko w jednym miejscu w kodzie caÅ‚ego programu – w definicji klasy. Gdy usuniemy bÅ‚Ä…d, usterka znika z każdego miejsca, w którym wystÄ…piÅ‚a.

I coś, co dla wielu będzie prawdopodobnie najważniejszą zaletą. Umiejętność programowania obiektowego umożliwia używanie frameworków i stosowanie wzorców projektowych, co szalenie ułatwia i przyspiesza proces powstawania programów.

Teraz jak to wyglÄ…da w praktyce. UtworzÄ™ klasÄ™ Notatka

class Notatka
{
	private $autor;
	private $notatka;
 
	public function zapisz_autora($autor)
	{
		$this->autor=$autor;
	}
 
	public function zapisz_notatke($notatka)
	{
		$this->notatka=$notatka;
	}
 
	public function wyswietl()
	{
		echo '<h2>'.$this->autor.'</h2>';
		echo '<p>'.$this->notatka.'</p>';
	}
}
 
$obiekt =new Notatka();
$obiekt->zapisz_autora($_POST['autor']);	
$obiekt->zapisz_notatke($_POST['notatka']);	
$obiekt->wyswietl();

Klasa

Klasa jest prototypem obiektu – strukturą zawierającą zarówno dane (pola klasy) jak i funkcje (metody klasy).
Klasę definiuje się słowem kluczowym class po którym podajemy nazwę klasy, a następnie wewnątrz nawiasów klamrowych definiujemy jej pola i metody.

Obiekt

Obiekt jest instancjÄ… klasy zawierajÄ…cÄ… siÄ™ w konkretnej zmiennej wykorzystywanej w kodzie programu.
Obiekt danej klasy tworzy się podstawiając do zmiennej instancję klasy tworzoną operatorem new. Dostęp do pól i metod klasy następuje poprzez nazwę zmiennej, operator ->, a następnie nazwę pola lub metody. Dostęp do pól i metod wewnątrz klasy otrzymuje się poprzez referencję $this->

Kwalifikatory dostępu

Definiując wewnątrz klasy pola i metody używamy kwalifikatorów dostępu. Do dyspozycji mamy trzy kwalifikatory dostępu: public, private, protected. Składowe o dostępie public są dostępne zarówno wewnątrz klasy jak i na zewnątrz. Do składowych o dostępie private dostęp istnieje jedynie z wewnątrz klasy, w której składowa została zdefiniowana. Do składowych o dostępie protected dostęp istnieje jedynie z wewnątrz klasy, w której składowa została zdefiniowana, oraz klas potomnych.

Metody

Metody klasy są funkcjami zdefiniowanymi wewnątrz klasy. Stosują się do nich wszystkie zasady związane ze zwykłymi funkcjami z uwzględnieniem kwalifikatorów dostępu.

Pola

Pola klasy są składowymi klasy przechowującymi dane dowolnego typu. Stosują się do nich wszystkie zasady dotyczące zwykłych zmiennych z uwzględnieniem kwalifikatorów dostępu.

Tagi: , , ,

10 odpowiedzi do “Programowanie obiektowe w PHP”

  1. Kamila pisze:

    Fajny temat. Dlaczego tak krótko. Mam nadzieję na więcej informacji na wideo. Czy będzie już jutro?

  2. Leszek Sewastianowicz pisze:

    Jutro? Być może. Na wideo będzie znacznie więcej. Zresztą cały temat jest dość obszerny. Całe szkolenie to ponad 5 godzin nagrania.

  3. alphatom79 pisze:

    Czekamy z niecierpliwością ;-)

  4. Witam, a czy to szkolenie również będzie dostępne do nabycia na dvd?

  5. Leszek Sewastianowicz pisze:

    Jeszcze nie wiem. Zależy od zainteresowania. Jeżeli ktoś będzie zainteresowany wersją dvd to proszę o wpis w tym miejscu.

  6. procek pisze:

    Bardzo dobrze, że ktoÅ› w koÅ„cu postanowiÅ‚ wziąć siÄ™ za obiektówkÄ™. Nie, żebym siÄ™ czepiaÅ‚, ale metoda wyÅ›wietl może powodować problemy – jest maÅ‚o uniwersalna bo zawiera kod HTML – nie można nic wiÄ™cej z tymi danymi zrobić – nazywa siÄ™ to efektem ubocznym klasy, których powinno być jak najmniej. Pewnie w nastÄ™pnych lekcjach bÄ™dzie to już dobrze zrobione dziÄ™ki return, ale na pierwszy ogieÅ„ może to uczyć zÅ‚ych nawyków. Tak czy inaczej artykuÅ‚ przydatny :)

  7. Leszek Sewastianowicz pisze:

    W programowaniu nic nie jest w 100% dobre ani złe. HTML użyty w pewnych metodach może rzeczywiście utrudnić ich wykorzystanie, podobnie jak użycie nieodpowiedniej pętli, nieodpowiedniego zapytania SQL, czy zwracanie nieodpowiedniego typu danych. Wszystko zależy od przeznaczenia danej metody i danego obiektu. Kod do szkolenia przygotowywałem głównie pod kontem korzyści dydaktycznych. Najbardziej zależało mi, by lekcje były zrozumiałe dla kogoś, kto o programowaniu obiektowym nie słyszał nic lub prawie nic. Taki cel wymaga czasem uproszczeń, zwłaszcza, że w programowaniu obiektowym korzyści z niektórych jego cech ujawniają się przy dosyć dużych projektach. Przygotowywanie do szkolenia kodu na kilka tysięcy linii nie byłoby najlepszym rozwiązaniem. Dlatego pewne zagadnienia przedstawiam tak, by łatwiej było je zrozumieć i zorientować się w całym kodzie przykładu, zwłaszcza osobom początkującym. Może kiedyś pokuszę się na przygotowanie szkolenia z wzorców projektowych. Wtedy przykłady będą mogły (pewnie będą musiały), być bardziej rozbudowane, ale też odbiorcy takiego szkolenia będą musieli być bardziej doświadczonymi programistami.

  8. procek pisze:

    W peÅ‚ni siÄ™ z TobÄ… zgadzam – po prostu na poczÄ…tek Å‚atwiej jest wywoÅ‚ać echo dla 2 zmiennych metody niż kombinować jakby tu zwrócić 2 zmienne returnem ;) Wzorce projektowe bardzo by siÄ™ przydaÅ‚y – czekam z niecierpliwoÅ›ciÄ… :)

  9. estera396 pisze:

    Przy okreslaniu ‘public funkction wyswietl(0) chcialabym wiedziec co oznacza
    - zero(0);
    - co robi, jaka funkcje spelnia ‘.’ W szkoleniu jest napisane: echo ”.
    - czy musimy odmieniac przez osoby: notatke, czy mozemy zostawic notatka?
    Szkolenie bardzo fajne;)

  10. Leszek Sewastianowicz pisze:

    Cieszę się, że to co robię podoba się innym. Dzięki za każde dobre słowo.
    Wszystko, co znajduje siÄ™ w nawiasach za nazwÄ… metody, jest przekazywane do metody jako jej argumenty.
    Kropka jest operatorem konkatenacji – skleja Å‚aÅ„cuchy znaków w jeden Å‚aÅ„cuch.
    Nazw pól i metod nie odmieniamy w kodzie. Pola o nazwie „notatka” i „notatke” byÅ‚yby odrÄ™bnymi polami.

Dodaj odpowiedź

Musisz się zalogować aby dodać komentarz.