Korzystając z tej strony zgadzasz się z polityką prywatności i regulaminem.
Akceptuj
WebInside.plWebInside.plWebInside.pl
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
Szukaj
  • Kontakt
  • Forum
WebInside.pl © 2023.
Czytasz: Programowanie zorientowane obiektowo w PHP
Udostępnij
Zaloguj się
Powiadomienia
Aa
WebInside.plWebInside.pl
Aa
Szukaj
  • Strona główna
  • Aktualności
  • Technologie webowe
  • Publicystyka
  • E-marketing
  • Poradniki
  • AI
  • Technologie
  • Artykuły partnerskie
  • Więcej
    • Kontakt
    • Mapa strony
Masz już konto? Zaloguj się
  • Aktualności
  • Technologie
  • WWW
  • E-marketing
  • AI
  • Poradniki
  • e(Biznes)
WebInside.pl © 2023.
WebInside.pl > Technologie webowe > Programowanie zorientowane obiektowo w PHP
Technologie webowe

Programowanie zorientowane obiektowo w PHP

WebInside.pl
Ostatnia aktualizacja: 21.03.2004
WebInside.pl
Udostępnij
Udostępnij

Programowanie obiektowe bez wątpienia ma wiele zalet, najważniejsze z nich to łatwe modyfikowanie oraz wielokrotne wykorzystania klas. W tym artykule pokaże jak korzystać z możliwości PHP, aby tworzyć funkcjonalne a za razem bardzo rozbudowane klasy.

UWAGA, jeżeli jeszcze nie wiesz czym jest OOP, przeczytaj najpierw artykuł „obiekty w PHP”, ponieważ tutaj nie będziemy zajmować się podstawową składnią.

Rozpoczniemy od zdefiniowania klasy zwierze, która będzie naszą oraz będzie punktem wyjścia do dalszej rozbudowy.

class zwierze {
var $gatunek;

function zwierze($gatunek) {
$this->gatunek = $gatunek;
}
function jedz($jedzenie) {
if($this->gatunek==””) $this->gatunek = „zwierze”;
echo $this->gatunek.” je „.$jedzenie.”<br>”;
}
function spij() {
if($this->gatunek==””) $this->gatunek = „zwierze”;
echo $this->gatunek.” spi zzz<br>”;
}

function typowyDzien($jedzenie) {
$this->jedz($jedzenie);
$this->spij();
}
}

Jak widać klasa składa się z jednej zmiennej, konstruktora oraz trzech prostych metod, chyba nie ma czego tutaj tłumaczyć, jeżeli znasz już podstawy programowania obiektowego.
Teraz stworzymy klasę tygrys, która będzie dziedziczyć metody i zmienne z klasy bazowej zwierze, w tym celu przy definicji obiektu użyjemy słowa kluczowego extends.

class tygrys extends zwierze {…}

Ten zapis czytamy tak: ‘Klasa tygrys jest rozszerzeniem klasy ‘zwierze’, można powiedzieć, że jest to stwierdzenie jak najbardziej poprawne, ponieważ klasa zwierze posiada metody wspólne dla wszystkich zwierząt, natomiast tygrys jako, że również jest zwierzęciem będzie posiadał te metody plus funkcje specyficzne dla wszystkich tygrysów. Skoro tak to zdefiniujmy jakąś metodę.

function poluje($ofiara) {
echo $this->gatunek.” poluje na „.$ofiara.”<br>”;
}

Nasuwa się jednak pytanie, a co jeśli zachodzi potrzeba użycia metody z klasy bazowej wewnątrz klasy potomnej? Na szczęście, PHP posiada mechanizm pozwalający na wykonywanie takich operacji, ogólny wzór ma postać: parent::nazwaMetody(), słowo parent oznacza rodzica czyli w naszym przypadku klasę zwierze, oczywiście zamiast słowa parent można wpisać nazwę klasy bazowej, ale jest to nie zalecane, chociażby ze względu na to, że gdy zmieni się nazwa klasy bazowej, klasę pochodna trzeba będzie zmieniać w kilku miejscach. Dopiszmy jeszcze jedna metodę do „tygrysa”, jak się pewnie domyślasz użyjemy w niej słowa kluczowego parent.

function typowyDzien($jedzenie, $ofiara) {
parent::typowyDzien($jedzenie);
$this->poluje($ofiara);
}

}

Co ciekawe w każdej klasie mamy teraz metodę o nazwie typowyDzien, z wnętrza klasy tygrys mamy dostęp do obydwóch funkcji, jednak z zewnątrz tylko do jednej, dzieje się tak dlatego, że PHP pozwala na overloading metod, to znaczy, że metode z klasy bazowej można nadpisać nową funkcją. Zobaczmy teraz jak to wszystko działa i czy w ogóle działa.

$a = new tygrys(„Tygrys”);
$a->typowyDzien(„padline”, „jelenia”);

/* wyswietli
Tygrys je padline
Tygrys spi
Tygrys poluje na jelenia */

Okazuje się, że wszystko jest w porządku, zauważmy jednak, że nasz tygrys nie posiada konstruktora, tymczasem wywołujemy go z jednym parametrem (new tygrys(„Tygrys”);). Przyczyna jest dość prosta, w PHP obiekt jest tworzony wraz z konstruktorem z klasy bazowej o ile nie posiada własnego, a więc gdyby w naszej klasie potomnej dopisać konstruktor byłby on używany domyślnie, innymi słowy PHP używa najnowszego konstruktora.

Obiekty w PHP tworzą spójną całość i trudno sobie wyobrazić, aby istniały one jako osobne funkcje, aczkolwiek istnieje taka możliwość, spróbujmy wywołać którąś z metod w podobny sposób jak poprzednio z tym, że zastąpimy słowo patent nazwą klasy (oczywiście zapisujemy to poza klasą, nie w jej wnętrzu).

zwierze::spij();
// wyświetli: zwierze spi
tygrys::poluje(‘inne zwierze’);
// wyświetli: poluje na inne zwierze

Metoda została wywołana poprawnie, ale nie posiada ona żadnych zmiennych i nie może komunikować się z innymi metodami, co więcej nie został utworzony żaden nowy obiekt, dlatego też słowo ‘Tygrys’ z poprzedniego przykładu zostało zastąpione domyślnym słowem ‘zwierze’.

Czasem chcielibyśmy wykorzystać zmienne obiektu na następnej stronie, ale jak wiadomo zaraz po kliknięciu w dowolny link wszystkie dane są usuwane, twórcy PHP przewidzieli taką sytuacje i udostępnili programistą dwie nowe funkcje: serialize() i unseriaze(). Pierwsza z nich służy do serializacji zmiennych (czyli zapisania ich w postaci ciągu znaków), natomiast druga funkcja odtwarza zmienne. Jeśli używasz sesji i session_register() do rejestracji obiektów, te obiekty są serializowane automatycznie na końcu każdej strony PHP i odserializowane automatycznie na każdej z następnych stron. Zasadniczo znaczy to, że te obiekty mogą pokazać się na dowolnej z twoich stron jeśli tylko staną się częścią twojej sesji. Na koniec zrobimy sobie przykład, ale najpierw trzeba przenieść klasy do jednego pliku.

// -> class.php:
class zwierze {
// tutaj zawartość calej klasy zwierze
}
class tygrys extends zwierze {
// zawartość klasy tygrys
}

// -> page1.php:
include(„class.php”);
session_start();
$a = new tygrys(„Tygrys”);
$a->typowyDzien(„padline”, „jelenia”);
$s = serialize($a);
$_SESSION[’serial’] = $s;
echo „<a href=page2.php>link</a>”;

// -> page2.php:
include(„class.php”);
session_start();
$a = unserialize($_SESSION[’serial’]);
$a->poluje(„jelenia”);

Najpierw należy otworzyć page1.php, a następnie przejść na stronę page2.php, na ekranie powinien pokazać się napis ‘Tygrys poluje na jelenia’, pomimo, że w pliku page2.php nie napisaliśmy.
$a = new tygrys(‘Tygrys’);
Również dobrym pomysłem jest przechowywanie obiektu w bazie danych, algorytm postępowania jest taki sam, najpierw serializujemy i zapisujemy obiekt, a następnie wyciągamy z bazy i odtwarzamy zmienne. Skoro jesteśmy przy serializacji obiektów to warto wspomnieć, że w PHP istnieją dwie magiczne funkcje: _sleep() i _wakeup(). Pierwsza z nich jest wywoływana automatycznie przed każdą serializacją obiektu, jeżeli oczywiście, zdefiniujemy w swojej klasie metodę _sleep(), może ona posłużyć do zamknięcia połączenia z bazą danych lub plikiem. Funkcja _wakeup() działa odwrotnie, to znaczy jest uruchamiana przed odtworzeniem wartości.

Na pewno każdy programista docenia zalety programowania obiektowego, problem w tym ,że nie każdy potrafi je dobrze zastosować, jeśli Ty również masz ten problem to mam nadzieje, że ten artykuł choć trochę rozjaśni Ci sytuację, a także wzbogaci Twoją wiedzę na temat PHP i pozwoli na stworzenie naprawdę potężnych klas.

Może Cię zainteresować

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

Serwer dla małej firmy – czym kierować się przy jego wyborze?

WebInside.pl 2004-03-21 2004-03-21
Udostępnij ten artykuł
Facebook Twitter Kopiuj link Wydrukuj
Udostępnij
Poprzedni artykuł Przetwarzanie plików PHP
Następny artykuł Zabezpieczanie stron przed nieuczciwymi klientami
Zostaw komentarz lub opinię

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Najnowsze artykuły

Procesor AMD Ryzen 7
Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
Technologie
Jak przygotować sklep internetowy na automatyzację obsługi klienta?
Artykuły partnerskie
the nvidia logo is displayed on a table
Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
AI Aktualności
Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?
E-marketing
4 najczęstsze cyberzagrożenia w przemyśle
Technologie
Jak uratować zaschnięty tusz do drukarki? Skuteczne domowe sposoby i porady
Poradniki
Model 3D jako wspólne źródło danych dla projektu, produkcji i montażu
Artykuły partnerskie
Dlaczego wideo z telefonu sprzedaje na TikToku lepiej niż profesjonalne spoty?
Artykuły partnerskie
Dwa ekrany zawsze pod ręką – zalety korzystania z monitora przenośnego na co dzień
Technologie
Rola nowoczesnych technologii w procesie rehabilitacji
Artykuły partnerskie
banner
Chcesz umieścić swoją reklamę w portalu WebInside.pl?
Skontaktuj się z nami, a zaproponujemy interesujące formy reklamy.
Skontaktuj się

Inne polecane artykuły

Technologie webowe

Sprawdź, jak zostać testerem oprogramowania lub Java developerem! Poznaj kursy online!

5 min czytania
Technologie webowe

Architektura globalnego e-commerce: Jak zbudować sklep gotowy na podbój świata?

7 min czytania
MacBook Pro showing programming language
Technologie webowe

Java obchodzi 30. urodziny – język programowania który zmienił świat technologii

9 min czytania
AktualnościTechnologie webowe

Jak zacząć projektować aplikację, nie mając gotowego pomysłu?

9 min czytania
woman in black top using Surface laptop
Technologie webowe

Serwer dla małej firmy – czym kierować się przy jego wyborze?

5 min czytania
Technologie webowe

Jaki hosting wybrać pod Laravel? Kompleksowy przewodnik dla twórców aplikacji webowych

6 min czytania
programming language
Technologie webowe

Kaskadowość w CSS – wszystko, co musisz wiedzieć

7 min czytania
two women talking while looking at laptop computer
Technologie webowe

Darmowe kreatory stron WWW – stwórz swoją stronę w godzinę

14 min czytania
//

WebInside.pl – portal technologiczny. Aktualności ze świata technologii, webmastering, marketing internetowy, AI, poradniki.

 

Partnerzy

Wszystkie kategorie

  • AI
  • Aktualności
  • Artykuły partnerskie
  • E-marketing
  • e(Biznes)
  • Poradniki
  • Publicystyka
  • Technologie
  • Technologie webowe

Ostatnio dodane

  • Najlepsze procesory z pamięcią 3D V-Cache: Wydajność dla graczy i profesjonalistów
  • Jak przygotować sklep internetowy na automatyzację obsługi klienta?
  • Nvidia przyłapana? Gigant AI chciał kupić miliony pirackich książek
  • Najczęstsze błędy w SMS marketingu: jak nie przepalić budżetu?

Kontakt

Chcesz się z nami skontaktować? Jesteś zainteresowany reklamą lub artykułem sponsorowanym?

Skorzystaj z formularza kontaktowego lub napisz do nas na kontakt@webinside.pl

WebInside.plWebInside.pl
WebInside.pl © 2023 | Mapa strony | Forum | Polityka prywatności
Witaj ponownie!

Zaloguj się do swojego konta

Zapomniałeś hasła?