Я на самом деле только что создал один, а затем понял, что это был шаблон Ghost после того, как задал вопрос здесь, в SO . Перейдите по этой ссылке для получения оригинального кода PHP, вот версия с псевдокодом:
// A "cheap" class
class Namespace_Original
{
// The expensive, uninitialised object
private Original
// The "cheap" data needed to initialize Original
private Data
// Constructor for the cheap class
public Namespace_Original(Data)
{
this.Data = Data
}
// Whenever you call a method of Original
public __call(method_name, method_data)
{
// Create the expensive object only the first time it's going to be used
if (empty(this.Original))
this.Original = new Original(this.Data);
// Call the Original's method with it's arguments
this.Original.name( method_data );
}
}
Когда вы инициализируете этот дешевый класс, внутри него ничего не создается. Когда вы на самом деле вызываете метод, создается «оригинальный» объект, если такового не было, и данные извлекаются из него. Это заставляет вас не инициализировать Оригинал , если вы не собираетесь его использовать, при условии, что это дорогостоящая операция.