Если позволяет структура вашего класса, вы можете разделить класс на несколько разных классов, которые являются частью цепочки наследования:
class foo1 {
public static function a() {}
}
class foo extends foo1 {
public static function b() {}
}
В качестве альтернативы, вы можете использовать __ callStatic () , если вы хотите снизить производительность. (Требуется PHP 5.3; хотя, если вам нужны только нестатические методы, __call доступен с 5.0.) Smarty 3 делает это IIRC.
class foo {
private static $parts = array('A', 'B');
public static __callStatic($name, $arguments) {
foreach (self::$parts as $part) {
if (method_exists($part, $name)) {
return call_user_func_array(array($part, $name), $arguments);
}
}
throw new Exception();
}
}
class A {
public static function a() {}
}
class B {
public static function b() {}
}
PHP 5.4 будет предположительно включать черты, которые являются более простым способом включения внешнего кода в класс:
class foo {
use A, B;
}
trait A {
public static function a() {}
}
trait B {
public static function b() {}
}