Co jste možná nevěděli o PHP: zapouzdření
Během učení se Smalltalku na diplomku jsem narazil na jednu zajímavost. Programovací jazyky z rodiny C (C, C++, Java, PHP) mají zapouzdření objektů na úrovni tříd, ne instancí (jako třeba Smalltalk).
V praxi to znamená, že pokud má objekt foo1 privátní instanční proměnnou boo, není tato proměnná přístupná zvenčí, ale je přístupná z objektu foo2, který je potomkem stejné třídy jako foo1.
Jednoduchá ukázka:
class Test { private $x; public function __construct($val) { $this->x = $val; } public function changeNeighbour($n, $val) { $n->x = $val; } public function getX() { return $this->x; } } $a = new Test(5); $b = new Test(1); $b->changeNeighbour($a, 2); echo $a->getX(); //vypise 2
Přiznejte se, vědeli jste to? :)