|
Cuvantul cheie „this”
Daca vrei sa accesezi functiile si variabilele unei clase chiar in cadrul acesteia, atat PHP4, cat si PHP5, iti pun la dispozitie cuvantul cheie $this, care este folosit ca o referinta la instanta curenta. Pentru a vedea cum functioneaza acesta, sa modificam functia mananca() pentru a primi ca parametru un numar de unitati de mancare care sunt adunate la greutatea unui urs:
<?php
class Urs {
public $nume;
public $greutate;
public function mananca($unitati) {
echo $this->nume." mananca ".$unitati." unitati de mancare... ";
$this->greutate += $unitati;
}
}
?>
In acest caz, prefixul $this indica faptul ca variabila ce urmeaza a fi modificata a fost definita ca proprietate a clasei. Acest lucru poate fi exprimat ca: „pentru acest obiect, aduna argumentul functiei mananca() la variabila $greutate”. In concluzie, cuvantul cheie $this iti ofera o metoda facila de a accesa variabilele si functiile „locale” ale clasei.
Iata un exemplu care ilustreaza functionarea sa:
<?php
$pui = new Urs;
$pui->nume = "Puiul urs";
$pui->greutate = 1000;
$frate = new Urs;
$frate->nume = "Fratele puiului";
$frate->greutate = 1000;
echo $pui->nume." cantareste ".$pui->greutate." unitati ";
echo $frate->nume." cantareste ".$frate->greutate." unitati ";
$pui->mananca(100);
$pui->mananca(50);
$frate->mananca(11);
echo $pui->nume." cantareste acum ".$pui->greutate." unitati ";
echo $frate->nume." cantareste acum ".$frate->greutate." unitati ";
?>
Codul de mai sus va afisa:
Puiul urs cantareste 1000 unitati
Fratele puiului cantareste 1000 unitati
Puiul urs mananca 100 unitati de mancare...
Puiul urs mananca 50 unitati de mancare...
Fratele puiului mananca 11 unitati de mancare...
Puiul urs cantareste acum 1150 unitati
Fratele puiului cantareste acum 1011 unitati
Constructori
In PHP ai posibilitatea de a executa o metoda a unei clase atunci cand este creata o noua instanta a acesteia. Aceasta metoda poarta denumirea de constructor. Pentru a o utiliza, definitia clasei tale in PHP5 trebuie sa contina o functie speciala, __construct().
De exemplu, daca vrei ca toti puii de urs nou-nascuti sa aiba blana maro si cantareasca 100 de unitati, poti folosi codul de mai jos:
<?php
class Urs {
public $nume;
public $greutate;
public $varsta;
public $culoare;
public function __construct() {
$this->varsta = 0;
$this->greutate = 100;
$this->culoare = "maro";
}
}
?>
In PHP4, constructorul trebuie sa aiba acelasi nume ca si clasa. Iata codul echivalent pentru PHP4:
<?php
class Urs {
var $nume;
var $greutate;
var $varsta;
var $culoare;
function Urs() {
$this->varsta = 0;
$this->greutate = 100;
$this->culoare = "maro";
}
}
?>
Sa cream o noua instanta a clasei:
<?php
$pui = new Urs;
$pui->nume = "Puiul urs";
echo $pui->nume." are culoarea ".$pui->culoare." si
cantareste ".$pui->greutate." unitati la nastere";
?>
Constructorul va initializa in mod automat proprietatile culoare si greutate pentru fiecare obiect de tipul Urs care este creat. In consecinta, scriptul de mai sus la afisa:
Puiul urs are culoarea maro si cantareste 100 unitati la nastere
|