I have a class with declared properties. The whole point of the class and it’s extensions is that I need them to always be available, even if null, on a different object. So it looks like:
class Wrapper {
public $a = "";
public $b = "";
public $c = "";
public function Wrapper() {
$this -> wrapped = new Wrapped();
foreach($this as $key => $val) {
if($key != 'wrapped') {
$this -> wrapped -> $key = $val;
}
}
}
}
But after instantiating the object, I want to be able to overwrite the declared values directly, so:
$wrap_test = new Wrapper();
$wrap_test -> a = 12;
So rather than writing a method or using $wrap_test -> wrapped -> a -> 12, I was looking for an equivalent to __set() that would call a method whenever any property is set.
Does this exist?
If your properties are declared
public, there’s no “event” or other method you can hook into. The properties can simply be changed directly by anybody.Declare your properties as
protectedorprivateso they cannot be changed directly from outside the class, then implement the__getand__setmethods so you are able to access the properties as if they werepublic. In the__setmethod, do whatever you need to do when the property changes.