Например, рассмотрим класс X
, который имеет некоторые методы утилиты ('foo', 'bar'), которые выполняют некоторую операцию над некоторым свойством X
. Этот метод также полезен для других внешних переменных. Некоторые могут реализовать X
и staticX
классов, как показано ниже: класс FooКомбинируйте статический класс и нестатический
class StaticX
{
public static function foo($p)
{
return $p * $p;
}
}
class X
{
private $p=4;
public function foo()
{
return StaticX::foo($this->p);
}
}
$x= new x;
echo $x->foo();
echo StaticX::foo(3);
Но этот подход имеет некоторые проблемы ремонтопригодность. Есть ли лучшее решение?
Пожалуйста, объясните, о чем вы говорите. – BetaRide
@BetaRide Если вы chane 'X :: foo', вы также меняете' StaticX :: foo' – PHPst
, если вы используете php 5.4+, вы можете использовать 'trait'. См. Http://php.net/manual/en/language.oop5.traits.php – Bart