Marrja e Vetive përmes Magjisë në OOP në PHP
Metoda tjetër magjike që do të
shqyrtojmë, quhet __get. Ky
metodë aktivizohet kur përpiqemi të lexojmë vlerën
e një vetie private ose të mbrojtur.
Nëse implementohet metoda __get në ndonjë
klasë, atëherë të gjitha përpjektjet për të hyrë në veti
që nuk ekzistojnë
ose të fshehura do të trajtohen
nga kjo metodë.
Në këtë rast PHP automatikisht do të transmetojë emrin e vetisë së kërkuar në parametrin e parë të kësaj metode, dhe vlera e kthyer nga kjo metodë do të perceptohet si vlera e vetisë me të cilën është kryer hyrja.
Me shumë gjasa ende nuk është shumë e qartë, si funksionon kjo,
prandaj le të shohim një shembull praktik. Le të themi se kemi këtë klasë
Test me një veti private dhe një publik:
<?php
class Test
{
public $prop1 = 1; // veti publike
private $prop2 = 2; // veti private
}
?>
Le të shtojmë në klasën tonë metodën magjike
__get, e cila për fillim thjesht do të
kthejë emrin e vetisë me të cilën është kryer hyrja:
<?php
class Test
{
public $prop1 = 1;
private $prop2 = 2;
public function __get($property)
{
return $property; // thjesht kthejmë emrin e vetisë
}
}
?>
Le të testojmë funksionimin e metodës magjike të krijuar. Le të përdorim tre lloje vetish: një veti publike, një private dhe një që nuk ekziston:
<?php
$test = new Test;
// Përdorim te vetia publike:
echo $test->prop1; // do të shfaq 1 - pra vlerën e vetisë
// Përdorim te vetia private:
echo $test->prop2; // do të shfaq 'prop2' - emrin e vetisë
// Përdorim te vetia që nuk ekziston:
echo $test->prop3; // do të shfaq 'prop3' - emrin e vetisë
?>
Siç e shihni, metoda jonë magjike reagon në hyrjen në veti private dhe ato që nuk ekzistojnë, por injoron hyrjen në ato publike - ato funksionojnë ashtu siç funksiononin më parë.