Да, уже находил сегодня эти гайды, и мне показалось что примерно то что я искал, это есть класс Reference(), который используется в тамошнем ServiceContainer. Правда ещё не совсем разобрался так ли это, и вообще не хотелось бы тянуть модули симфони ради этой задачи.
Нет, к сожалению такой вариант не подойдёт, т.к. нужна ленивая инициализация, и передавать в аргументе название класса мне кажется менее удобным, чем экземпляр класса