Другая возможность для внедрения зависимостей - это рефакторинг в метод "init", т.е.
class A
{
function setB ( B $b = null )
{
$this->b = ( !is_null($b) ? $b
$this->initB()
);
}
function initB ( )
{
return new B();
}
function someMethod ( )
{
return $this->b->getResult();
}
}
В этой реализации подклассы «A» могут переопределять «initB» для изменения зависимости, а макет «A», сгенерированный с помощью «PHPUnit_Framework_TestCase :: getMock ()», может определять возвращаемое значение для метода без использования функциональности. сеттера (или вы можете опустить сеттер).