Extender métodos en PHP
Interesante método que se utiliza mucho en .NET, que permite extender los métodos de una clase usando la definición de métodos estáticos de una clase extendida de la primera. El proceso es sencillo, se utiliza el método __call y se obtiene una lista de clases definidas y se compara la clase actual por cada una de las definidas y si contiene el método y es derivada de ella, se ejecuta la llamada:
public function __call($functionName, $arguments = array()) {
// Add an extra parameter
array_unshift($arguments, $this);
// Current reflected class
$reflectedClass = new reflectionObject($this);
// Find suitable class and function
$availableClasses = get_declared_classes();
foreach ($availableClasses as $class) {
$classDefinition = new ReflectionClass($class);
$availableMethods = $classDefinition->getMethods();
foreach ($availableMethods as $method) {
if ($method->isStatic() && $method->getName() == $functionName) {
$availableParameters = $method->getParameters();
if ($availableParameters[0]->getClass()->getName() == $reflectedClass->getName()) {
$method->invokeArgs(null, $arguments);
}
}
}
}
}
Vía / PHPDeveloper.org
A parte de la
Jaws es un CMS en PHP con el cual podremos crear nuestros propios sitios web.
Thomas Boutell, el desarollador de la librería