Основа всех современных фреймворков - это контейнер зависимостей. Который, создавая на лету экземпляр требующегося для обработки НТТР запроса класса, "внедряет" в него (через конструктор или через параметры методов) необходимые этому создаваемому объекту/вызываемому методу зависимости. Создавая их на лету или используя готовые.
И, в свою очередь, создавая эти зависимости, также внедряет нужные уже им сервисы. И так по цепочке.
Если вы посмотрите на пример реализации контроллера в Симфони например, то вы нигде не увидите что-то вроде
public function process()
{
$request = new Request();
$param = $request->get('name')
}
а только
public function process(Request $request)
{
$param = $this->request->get('name')
}
Заметил, что в PHP если и используется связи между объектами(ассоциация), то только в виде композиции,
А вот тут я реально удивился. Скорее это я бы у вас попросил "пример кода" в котором "вы заметили" композицию. Потому что в современном РНР коде её днем с огнём не найти - везде сплошная агрегация. Даже там, где по сути подошла бы и композиция. Давно ли вы видели в коде создание new Сlass внутри класса вместо использования $this->object? И если да - то мне страшно любопытно -
где?
Хотя нет, кажется я понял. Есть такие гении, которые действительно, вместо
class User
{
public function __construct(Database $db)
{
$this->db = $db;
}
}
пишут
class User
{
protected $db;
public function __construct()
{
$this->db = new Database();
}
}
Но тут надо понимать, что это дети, которые вчера увидели редактор кода. Больше никто так не пишет.
(Тут надо оговориться, что это не догма, и внедрение через параметры не обязательно. Вполне можно создать какой-то объект и на лету, но это случается гораздо реже, чем использование уже готового)
редко бывает, когда создаётся самостоятельный класс, а потом он ещё и в другой класс попадает.
А здесь вы вообще какую-то чушь написали. Если говорить про
классы, то они вообще почти никогда не создаются кодом на лету. Классы пишет программист, и сохраняет в коде программы. Которая потом выполняется, и создает из этих классов объекты.
А если вы имели в виду объекты, то их создаётся миллион, и все они "попадают" в другие объекты. Даже при обработке НТТР запроса