Quantcast
Channel: kastin – Webmaster Blog
Viewing all articles
Browse latest Browse all 31

[PHP] metody dostępu do prywatnej własności klasy

$
0
0

Teoria mówi, że parametr prywatny klasy w PHP z założenia nie jest dostępny z zewnątrz. Mając więc klasę:

class A { private $x = 1; }
$a = new A();
echo $a->x; // spowoduje błąd

Możemy się spodziewać błędu podczas próby wyświetlenia zawartości zmiennej prywatnej.

Warto jednak znać pewne metody, pozwalające na dostęp do “ukrytej” wartości:

1) po prostu ją wyświetl:

print_r($a);
var_dump($a);

2) rzutowanie do tablicy:

$a = (array) $a;
echo $a["\0A\0x"];

3) “binding” (PHP 5.4)

$getXCB = function() {return $this->x;};
$getX = $getXCB->bindTo(new A, 'A');
echo $getX();

4) ReflectionClass (PHP 5.3)

$aflection = new ReflectionClass("A");
$xProp = $aflection->getProperty("x");
$xProp->setAccessible(true);
echo $xProp->getValue($a);


Viewing all articles
Browse latest Browse all 31

Latest Images