Php ArrayAccess private->public :o
Üdv!
Röviden arról van szó, hogy az objectek nagy részén használni szeretném az ArrayAccess interfacet.Az előnyei ennek, hogy a template rendszeremben nem kell a tömböktől elkülönítenem az objektumok tulajdonságait, hanem azonos módon meg tudom őket adni.
A hátránya pedig, hogy az ArrayAccess-el a private/protected tulajdonságok is lekérhetővé válnak. Ezt szeretném elkerülni valahogyan, de eddig nem jöttem rá, hogy mit lehet tenni.
Igazából az sem baj nekem, ha ArrayAccessel az objektumon belülről nem lehet elérni a private vagy protected tulajdonságokat, mert tényleg csak a külső elérésre használnám.
Az igazi megoldás az lenne, ha valahogy le lehetne kérdezni egy tulajdonságról, hogy az public vagy sem. Ha valaki tud erről valamit, az kérem jelezze.
Előre is kösz.
■ Röviden arról van szó, hogy az objectek nagy részén használni szeretném az ArrayAccess interfacet.
class cucc implements ArrayAccess
{
protected $a=12;
public $b=13;
public function offsetExists($name)
{
return isset($this->$name);
}
function offsetGet($name)
{
return $this->$name;
}
function offsetSet($key,$val)
{
$this->$key=$val;
}
function offsetUnset($name)
{
unset($this->$name);
}
}
$x=new cucc();
echo $x['a'];
echo $x['b'];
A hátránya pedig, hogy az ArrayAccess-el a private/protected tulajdonságok is lekérhetővé válnak. Ezt szeretném elkerülni valahogyan, de eddig nem jöttem rá, hogy mit lehet tenni.
Igazából az sem baj nekem, ha ArrayAccessel az objektumon belülről nem lehet elérni a private vagy protected tulajdonságokat, mert tényleg csak a külső elérésre használnám.
Az igazi megoldás az lenne, ha valahogy le lehetne kérdezni egy tulajdonságról, hogy az public vagy sem. Ha valaki tud erről valamit, az kérem jelezze.
Előre is kösz.
Közben megoldódott
Ha valaki tud rá más módot szívesen meghallgatom.
Kell ez így?
Persze kérdéses, hogy érdemes -e átírnod ennek megfelelően az összes osztály.
Ezen kívül lehet még trükközni esetleg egy másik osztály bevonásával:
Vagy inkább...
Ez nem megoldás
Én legalábbis úgy értelmeztem, hogy a cucc::$b értékét mind a $x->b, mind a $x['b'] módon el akarja érni, míg cucc::$a esetén mindkét módon hibát akar látni.
Hopp, nem oda ment, ahová akartam.
Értem én...
ha php > 5.1.2
-cs-
Sanyi
Hogy?
olvasasnak megfelel
igazabol ennek a ket metodusnak a hasznalataval, engedlyezheted a hozzaferest bizonyos vedett )private, protected) adatokhoz, tulajdonsagokhoz egy adott objektumban. Hasznalatara van rengeteg pelda a megjegyzesekben es a peldakban is. Eloszor en se nagyon ertettem, de erdemes szerintem utananezni, sajnos en nem tudok olyan jol fogalmazni, hogy osszefoglaljam neked a lenyeget, szerintem a peldak magukert beszelnek!
-cs-
Sanyi
Félreértesz
egy pelda
-cs-
Sanyi