Beste leden,

Is het in PHP mogelijk om velden ( properties ) als read-only in te stellen? Althans, om toegang tot te krijgen. Je hebt dus wel een Setter() nodig maar geen Getter(), dat je dus gewoon $object->property kunt gebruiken. Het enige is dan dat je dus niet: $this->property = new SomeObject(); kunt doen. Daar zou je dus de Setter() voor moeten gebruiken.. Iemand een ideetje?
Ik heb het nu geprobeerd met een ro_ in het begin (van read only). Maar misschien moet je nog een extra propertie aanmaken met de read only properties erin, of een var in de get functie:
<?php
public function __get( $name )
{
$readOnlies = Array('foo', 'someVar');
if( in_array($name, $readOnlies) )
return $this->$name;
else
throw new InvalidArgumentException(sprintf('Property(%s) not read only', $name));
}
?>
Ja ik had het door, maar vond dat iets te lelijk om door te voeren. Een underscore op het einde is ook niet mooi, maar valt nog wel te hanteren, enige wat je hoeft te doen is een extra character toevoegen.

Maar een array bijhouden is misschien ook nog wel iets. Jammer dat we geen keywords hebben die niet nodig zijn en kunnen hanteren en vervolgens checken of een property van type xx is... Ik denk dat ik voor een array ga. Enige nadeel is echter dat door het overloaden van de __get() je niet dynamisch velden kunt toevoegen en op kunt vragen, aangezien je niet dynamisch.. shit.. ik ben echt dom van tijd tot tijd..

Reageren