Szukaj na tym blogu

Postaram się przekazać swoje doświadczenia z PHP, oraz innych dziwnych rzeczach, typu MySQL, DB2. Czyli to co umiem. Blogoczytelników o słabych nerwach proszę o nieczytanie tego blogu. Dlaczego? Jeszcze nie wiem. W razie pytań z dziedziny PHP proszę pytać, jest cień możliwości że akurat to wiem. ;)

niedziela, 23 września 2012

Programowanie obiektowe w PHP. (cz. 3)

Programując w Javie na Androida są dostępne w klasie dwie ciekawe metody. onCreate, onDestroy. Takie cacka dostępne są też w PHP. Nazywają się __construct i __destruct. Jedna i druga zaraza jest dziedziczona. Teraz trochę z nimi zamieszam. Uwaga! Załóżmy że mamy taki malusi przykładzik.
<?php
class klasa_a {
 function __construct() {
 echo "Się skonstruowało! <br>";
 }
}
$ob = new klasa_a();
?>
Jak widać wiem co nieco o HTML'u. ;-) Mamy prostą klasę i se ją wywołujemy, pakując do zmiennej $ob, co spowodowało objawieniem się napisu. Co by utrudnić życie, zrobimy drugą klasę na podstawie tej pierwszej. Ci od Androida (ja do nich też należę) tak mają, to czemu nie w PHP. Nie można? A trzeba!
<?php
class klasa_a {
 function __construct() {
  echo "Się konstruowało!
"; } } class klasa_b extends klasa_a { } $ob = new klasa_b(); ?>
Wywołujemy klasę która jest rzekomo pusta, a tu pojawia się napis. To żaden cud, błąd, spisek, układ. Klasa b dziedziczy wszystko co ma klasa a, włącznie z konstruktorami i całym dobrodziejstwem inwentarza. Dziedzictwo oczywiście można nadpisać.
<?php
class klasa_a {
 function __construct() {
  echo "Się skonstruowało! <br>";
 }
}

class klasa_b extends klasa_a {
 function __construct() {
  echo "Dziedziczone ";
 }
}
$ob = new klasa_b();
?>
Jak widać wyświetliło się co innego, metoda została nadpisana. Ale co zrobić że w klasie a podoba mi się wpis i chcę dodać drugi w klasie b? Jest na to metoda. Zmieniamy w klasie b konstruktor tak.
function __construct() {
 echo "Dziedziczone ";
 parent::__construct();
}
Po prostu odwołujemy się do rodzica i już. Cała filozofia. w ten sposób możemy ostro namieszać w klasach, co by wrogi element z mniejszym doświadczeniem, a większymi aspiracjami se zęby połamał. Do pieca można dowalić jeszcze __destruct. Ta metoda wykonuje się kiedy skrypt jest kończony. A tak to wygląda.
<?php
class klasa_a {
 function __construct() {
  echo "się skonstruowało! <br>";
 }
}

class klasa_b extends klasa_a {
 function __construct() {
  echo "Dziedziczone ";
  parent::__construct();
 }
 function __destruct() {
  echo "To już jest koniec, nie będzie nic! <br>";
 }
}
$ob = new klasa_b();
echo "Jakaś linia co by była?!! <br>";
?>
Jak widać destruktor wykonał się na samym końcu. W brew pozorom bardzo przydatna rzecz. Można zamykać połączenie z bazą kiedy robimy to w swojej klasie, można zamykać plik, co by nie zapomnieć, a dane nie poszły se w siną dal, można dać stopkę kiedy tworzymy stronę w jakiejś zagmatwanej stronie... można zamieszać, ja tylko dałem marny przykład co by wiedzieć co w trawie piszczy.

Brak komentarzy:

Prześlij komentarz

Konstruktywne komentarze mile widziane.
Wulgaryzmy, obraźliwe stwierdzenia będą usuwane.