Klasy

Programowanie obiektowe jest mo┐liwe r≤wnie┐ w PHP (mimo, i┐ jest to jΩzyk interpretowany). Nie jestem przekonany, czy bΩdziesz tego u┐ywa│, jednak je╢li jeste╢ przyzwyczajony, to PHP Ci na to pozwala.

Og≤lna sk│adania deklaracji klas jest nastΩpuj▒ca:

class Nazwa_klasy
{
  [var deklaracja zmiennej]
  [deklaracja funkcji]
}

Jak wiΩc widzimy tutaj deklaracja zmiennych jest obowi▒zkowa (i wynika istoty obiektu... trzeba wiedzieµ, z czego dok│adnie siΩ on sk│ada). Nazwy zmiennych (w│a╢ciwo╢ci) s▒ dowolne, natomiast nazwy metod nie do ko±ca. Kiedy nazwa metody jest taka sama, jak nazwa klasy, metoda ta staje siΩ automatycznie konstruktorem danego obiektu (i jest wykonywana zaraz, po jego utworzeniu). PHP nie posiada destruktor≤w (sam troszczy siΩ o "posprz▒tanie").

Maj▒c zdefiniowan▒ klasΩ, do tworzenia obiekt≤w u┐ywamy polecenia new. DostΩp do poszczeg≤lnych element≤w obiektu mamy dziΩki operatorowi ->. Wszystkie klasy posiadaj▒ wewnΩtrzn▒ zmienn▒ this, kt≤ra wskazuje na dany obiekt. Odwo│uj▒c siΩ do w│a╢ciwo╢ci obiektu, ich nazwy nie poprzedamy ju┐ znakiem dolara.

Oto przyk│ad, kt≤ry demonstruje u┐ywanie obiekt≤w w naszych skryptach:

<html>
<head>
  <title>Obiekty</title>
</head>
<body>
  <?
    
      
class samochod
      
{
        
// wlasciwosci
        
var $predkosc;
        var 
$kolor;
        var 
$radio;


        
// metody

        // konstruktor
        
function samochod()
        {
          
$this->predkosc=0;
          
$this->kolor="CZERWONY";
          
$this->radio=FALSE;
        }

        
// inne metody
        
function Wlacz_radio()
        {
           
$this->radio=TRUE;
        }

        function 
Wylacz_radio()
        {
           
$this->radio=FALSE;
        }
      }

      
// tworzymy obiekt
      
$Syrenka=new samochod;

      echo 
"Kolor naszego samochodu: ".$Syrenka->kolor."<br>";
      echo 
"Stan radia: ";
      if (
$Syrenka->radio) echo "Wlaczone<br>"; else echo "Wylaczone<br>";

      
$Syrenka->Wlacz_radio();

      echo 
"Stan radia: ";
      if (
$Syrenka->radio) echo "Wlaczone<br>"; else echo "Wylaczone<br>";
  
?>
</body>
</html>