Rev 60 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
1
<?php
namespace de\pointedears
;
/**
* Base class providing a generic getter and setter
*
* @author Thomas 'PointedEars' Lahn
*/
abstract class Base
{
/**
* Retrieves a property value.
*
* @param string $name
* Property name
* @throws InvalidArgumentException
* if the property does not exist or has no getter
* @return mixed
* Property value
*/
public function __get
($name)
{
$getter = 'get' . ucfirst($name);
if (method_exists($this, $getter))
{
return $this->$getter();
}
if (property_exists
($this, "_$name"))
{
throw new \InvalidArgumentException
("Property '_$name' has no getter");
}
throw new \InvalidArgumentException
("No such property: '_$name'");
}
/**
* Sets a property value.
*
* @param string $name
* Property name
* @param mixed $value
* Property value
* @throws InvalidArgumentException
* if the property does not exist or is read-only
* @return mixed
* Return value of the property-specific setter
*/
public function __set
($name, $value)
{
$setter = 'set' . ucfirst($name);
if (method_exists($this, $setter))
{
return $this->$setter($value);
}
if (property_exists
($this, "_$name"))
{
throw new \InvalidArgumentException
("Property '_$name' has no setter");
}
throw new \InvalidArgumentException
("No such property: '_$name'");
}
}