Что произойдет, если мы используем два разных класса друг в друге в качестве зависимости. Вызывает ли это какие-либо важные проблемы, такие как утечка памяти? Или какая-нибудь досадная проблема..

Например

class Application {
    private $container;

    public function __construct(Container $container)
    {
        $this->container = $container;
    }
}

class Container {
    private $app;

    public function setApp(Application $application)
    {
        $this->app = $application;
    }
}

Поскольку я знаю, что объекты передаются по ссылке, каждый вышеприведенный объект выделяет определенное количество памяти. Но я не уверен, что это вызывает какие-либо другие проблемы.

Я знаю, что вопрос звучит глупо, но я хотел бы знать ваше мнение и советы.

-1
Teoman Tıngır 8 Ноя 2019 в 03:13
Это совершенно нормально, но я не уверен, как вы планируете его построить.
 – 
Alex Barker
8 Ноя 2019 в 03:15
Я думаю, что это невозможно. Мне нужно сделать сеттер для одного из них. Извините, я не был сосредоточен на этом, когда задавал вопрос
 – 
Teoman Tıngır
8 Ноя 2019 в 03:19

1 ответ

Утечки памяти на самом деле не проблема. Современные сборщики мусора — инструменты, которые ищут память, которую можно переработать, — ищут так называемые «циклические ссылки», т. е. места, где один объект ссылается на другой и наоборот. Сборщик мусора PHP обнаружит, что эта циклическая ссылка существует, и пока никакая внешняя ссылка не указывает на экземпляр Application или Container, сборщик мусора будет перерабатывать выделенную память, как ожидалось.

Кроме того, утечка памяти представляет собой настоящую проблему только в том случае, если память не освобождена. Когда процесс PHP завершается, эта память перераспределяется независимо от того, произошла ли сборка мусора. Учитывая, что PHP имеет максимальное время выполнения, вы не должны сталкиваться с утечками памяти в PHP, если только вы не делаете что-то невероятно странное.

1
B. Fleming 8 Ноя 2019 в 06:32