So I have a couple of arrays
$array_1 = Array('one','two','three');
$array_2 = Array('red','blue','green');
Is there a dynamic way to create the Setters and Getters for an array with single value entries?
So the class would be something like:
class xFromArray() {
}
So the above if I passed $array_1 it would generate something like this:
private $one;
setOne($x) {
$one = $x;
}
getOne() {
return $one;
}
if I passed $array_2 it would generate something like this:
private $red;
setRed($x) {
$red = $x;
}
getRed() {
return $red;
}
So I would call it somehow like this? (My best guess but doesn’t seem that this would work)
$xFromArray = new xFromArray;
foreach($array_1 as $key=>$data) {
$xFromArray->create_function(set.ucfirst($data)($data));
echo $xFromArray->create_function(get.ucfirst($data));
}
You can use
__call()to invoke dynamic methods. So:Personally I wouldn’t go the route of using getters and setters in PHP. Use the special methods
__get()and__set()instead and treat these dynamic properties as object properties rather than adding a (most likely unnecessary) method wrapper.Edit: to clarify,
__call()is invoked when you call an method in an object that either doesn’t exist or is inaccessible. So:__call()is used here to decipher the method name. If it fits the pattern of get or set followed by a property name (from the initial array) then it works as expected, otherwise it throws an exception. You can of course change this behaviour any way you wish.See Overloading from the PHP manual for a more detailed explanation of these “magic” methods.