- forward_static_call: documentation ( source)
<?php
class BaseClass {
private static $queryClass = 'StaticSqlQuery';
public static function setQueryClass($className) {
static::$queryClass = $className;
}
public static function test() {
return forward_static_call([static::$queryClass, 'init']);
}
}
class StaticSqlQuery {
public static function init() {
return 'Original call';
}
}
echo BaseClass::test();
BaseClass::setQueryClass(
get_class(new class extends StaticSQLQuery {
public static function init()
{
return 'My stub';
}
})
);
echo BaseClass::test();