Копаясь в коде Opencart в самом начале вижу такие выражения:
$registry = new Registry();
// Тут куча разного кода, потом:
// Event
$event = new Event($registry);
$registry->set('event', $event); // То что тут происходит понятно
// Loader
$loader = new Loader($registry);
$registry->set('load', $loader); // Здесь тоже
Что значит когда объект registry передается в конструктор объектов event и loader и потом сам же принимает эти объекты в себя? Странно выглядит. Не совсем понятно для чего это сделано, для того чтобы объект loader имел доступ ко всему содержимому объекта registry в дальнейшем?