It provides a filtered controlled access to an object, without exposing it directly.
How to implement in PHP5:
Declare a class:
- constructor: instantiates the object (only the first time) and keeps the instance into a private properties
- – implement the methods that provide a controlled access to the internal object
– use the magic method __call($name, $value), then checks/filters the name and arguments, and may call call_user_func_array($func, $params). The $func parameter ($func) must be an array that contains the object (private property) and the function name ($name passed to __call).
For security obvious reasons, implement also the other magic methods, such as __clone(), __se()t, __get(), __toString()