Klasy i obiekty

Klasa jest teoretycznym projektem (wzorcem), fizyczny egzemplarz klasy nazywamy obiektem.

Obiekty danej klasy tworzymy operatorem new, zwraca on referencję do utworzonego obiektu.

Przykładowy kod:


<?
class Slon
{
    public $imie;
    public $dlugoscTraby;
    public $nieTegoChce = ':(';

    public function machnijTraba() {
        echo 'macham traba';
    }
};
$dumbo = new Slon;          //1
$dumbo->imie = 'dumbo';     //2
$dumbo->dlugoscTraby = 50;
$dumbo->machnijTraba();     //3
echo $dumbo->dlugoscTraby;  //4
?>

Należy pamiętać że nazwy właściwości do której się odwołujemy podajemy bez znaku dolara $

Wywołanie kodu :


<?php
$imie = 'nieTegoChce';
$dumbo = new Slon;
$dumbo->$imie = 'dumbo';
?>

Nie uzyskamy dostępu do właściwości $imie,obiektu pokazywanego przez $dumbo. PHP przeszuka bieżący zakres w poszukiwaniu zmiennej $imie i pobierze jej wartość, a następtnie użyje jej jako nazwę właściwości do pobrania (zmienna zmiennej).Tak więc w podanym przykładzie uzyskamy dotęp do właściwości - $nieTegoChce.

Dynamiczne deklarowanie właściwości

PHP zezwala na dynamiczne deklarowanie właściwości obiektów

Przykład :


<?php $dumbo = new Slon;
$dumbo->kolor = 'pomaranczowy';
?>

Klasa Slon nie posiada właściwości kolor, tak więc PHP dynamicznie utworzy tą właściwość i doda ją do obiektu wskazywanego przez zmienną $dumbo. PHP utworzy ją jedynie dla tego obiektu, tak więc wszystkie inne obiekty klasy Slon, nie będą posiadać tej właściowści.

$this

Wewnątrz metod obiektu posiadasz pełny dostęp do jego właściwośći, jednak dostęp wymaga wywołania specjalnej zmiennej, która inforumje metodę że działamy na elemencie klasy. Zmienna ta nosi nazwę $this i zawsze wskazuje na bieżąco wykorzystywany obiekt.

Zmienną $this musimy także użyć gdy chcemy wywołać metodę wewnątrz klasy.


<?
class Slon
{
    private $imie;
    public function ustawImie($dane){
        //$imie = $dane;     //3
        $this->imie = $dane; //4
    }
    public function podajImie(){
        return $this->imie;
    }
    public function przedstawSie(){
        return 'Mam na imie'.$this->podajImie();
    }
};
$dumbo = new Slon;
//$dumbo->imie = 'dumbo';    //1
$dumbo->ustawImie('dumbo');  //2
//echo $dumbo->imie;         //5
echo $dumbo->przedstawSie(); //6
?>


<?php
class db_mysql {
        private connect = NULL;
        private limit = 10;
        public connect() {
            //Treść funkcji
        }
        public disconnect() {
            //Treść funkcji
        }
        public selectAll() {
            //Treść funkcji
        }};