Тогда $ obj и $ obj1 имеют разную область видимости, почему?
Потому что у них нет абсолютно никакой причины делить одну и ту же "область видимости", если под этим вы подразумеваете быть одинаковымипример.Вы реализовали этот синглтон, используя метод, который вы сделали, но это не влияет на остальную часть поведения PHP.Конструкция клона не использует ваш метод create_obj()
, поэтому он не будет синглтоном.
А как создать только один объект, если клон затем использует одну и ту же область видимости?
Не используя клон.Если вы хотите, чтобы ваш класс был одноэлементным с помощью этого метода, вам нужно всегда использовать ваш метод создания одноэлементных файлов.
Сложно сказать, но у вас здесь противоречивые цели,Если вам нужны два разных экземпляра объекта, но представляющих один и тот же экземпляр, просто использует один и тот же экземпляр объекта .Разницы практически нет.
Если вам нужен один экземпляр объекта, который будет использоваться на протяжении всего выполнения скрипта, нет необходимости в синглтоне, просто создайте его экземпляр один раз, а затем передайте его каждому другому нужному объектуЭто.Объекты передаются в PHP как ссылки, что означает, что если вы передадите их разным функциям, все функции будут работать в одном экземпляре.