I have a class:
class Foo {
// Accept an assoc array and appends its indexes to the object as property
public function extend($values){
foreach($values as $var=>$value){
if(!isset($this->$var))
$this->$var = $value;
}
}
}
$Foo = new Foo;
$Foo->extend(array('name' => 'Bee'));
Now the $Foo object has a public name property with value Bee.
How to change extend function to make variables private ?
Edit
Using a private array is another way and definitely not my answer.
Just plain, bad design.
What’s the purpose of adding a private [!] field at runtime? Existent methods can’t rely on such added fields, and you’d be messing with the object functionality.
If you want your object to behave like an hashmap [i.e. you can just call
$obj -> newField = $newValue], consider using magic__getand__setmethods.