<?php
class Test
{
protected $myName;
public function getMyName()
{
return $this->$myName;
}
public function __set($key, $value)
{
if (isset($this->$key))
$this->$key = $value;
// throw new Exception() could be added here
}
public function __get($key)
{
return isset($this->$key) ? $this->$key : null;
}
public function __call($name, $arguments)
{
$matches = array();
$pattern = '/^set([A-Za-z0-9]+)/';
if (preg_match($pattern, $name, $matches)) {
//var_dump($arguments, $matches);
$property = $matches[1];
$property = strtolower($property[0]) . substr($property, 1, strlen($property)-1);
var_dump($property, isset($this->$property));
$this->__set($property, $arguments[0]);
}
}
}
$test = new Test;
$test->setMyName(25);
var_dump($test->getMyName());
string(6) "myName"
bool(false)
Notice: Undefined variable: myName in /in/JEX3h on line 9
NULL
Output for 7.3.32 - 7.3.33
string(6) "myName"
bool(false)
NULL
Output for 5.0.5
string(6) "myName"
bool(false)
Notice: Undefined variable: myName in /in/JEX3h on line 9
Fatal error: Cannot access empty property in /in/JEX3h on line 9
Process exited with code 255.
Output for 5.0.0 - 5.0.3
string(6) "myName"
bool(false)
Notice: Undefined variable: myName in /in/JEX3h on line 9
NULL
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/JEX3h on line 5
Process exited with code 255.
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/JEX3h on line 5
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/JEX3h on line 5
Process exited with code 255.