Вы можете играть с __ callStatic () и делать что-то вроде этого:
class testObj {
public function __construct() {
}
public static function __callStatic($name, $arguments) {
$name = substr($name, 1);
if(method_exists("testObj", $name)) {
echo "Calling static method '$name'<br/>";
/**
* You can write here any code you want to be run
* before a static method is called
*/
call_user_func_array(array("testObj", $name), $arguments);
}
}
static public function test($n) {
echo "n * n = " . ($n * $n);
}
}
/**
* This will go through the static 'constructor' and then call the method
*/
testObj::_test(20);
/**
* This will go directly to the method
*/
testObj::test(20);
Используя этот код, любой метод, которому предшествует '_', сначала запустит статический 'конструктор'.
Это просто базовый пример, но вы можете использовать __callStatic
, однако он лучше работает для вас.
Удачи!