Desde el (el énfasis es mío) PHP manual on class properties:
Las variables de miembro de clase se llaman "propiedades". También puede verlos referidos al uso de otros términos como "atributos" o "campos", pero a los fines de esta referencia utilizaremos "propiedades". Se definen utilizando una de las palabras clave public, protected o private, seguida de una declaración de variable normal. Esta declaración puede incluir una inicialización, pero esta inicialización debe ser un valor constante, es decir, debe poder evaluarse en tiempo de compilación y no debe depender de la información del tiempo de ejecución para poder evaluarse.
bien crear en el interior del constructor (composition)
class Foo
{
protected $bar;
public function __construct()
{
$this->bar = new Bar;
}
}
o inject en el constructor (aggregation)
class Foo
{
protected $bar;
public function __construct(Bar $bar)
{
$this->bar = $bar;
}
}
o utilizar la inyección de setter.
class Foo
{
protected $bar;
public function setBar(Bar $bar)
{
$this->bar = $bar
}
}
Quiere favor aggregation over composition.
La agregación también se conoce como "Inyección de dependencias" y Fabien Potencier tiene un tutorial aquí: http://fabien.potencier.org/article/11/what-is-dependency-injection –