одноэлементный шаблон в PHP 4

#php #singleton #php4

#php #синглтон #php4

Вопрос:

возможно ли создать одноэлементный класс в PHP 4?

Прямо сейчас у меня есть что-то вроде http://pastebin.com/4AgZhgAA который даже не анализируется в PHP 4

Какая минимальная версия PHP требуется для использования подобного синглтона?

Комментарии:

1. Зачем вам это нужно в PHP 4 в первую очередь? Он действительно, действительно мертв. Создание нового программного обеспечения на его основе — действительно плохая идея.

Ответ №1:

PHP4 и ООП === автомобиль без двигателя (:

Это возможно, но непрактично.

Посмотрите этот пример кода:

 class SomeClass
{
    var $var1;

    function SomeClass()
    {
        // whatever you want here
    }

    /* singleton */
    function amp;getInstance()
    {
        static $obj;
        if(!$obj) {
            $obj = new SomeClass; 
        }
        return $obj;
    }
}
  

Ответ №2:

Алекс, эта статья должна быть полезной — http://abing.gotdns.com/posts/2006/php4-tricks-the-singleton-pattern-part-i / . Ключ в том, чтобы использовать базовый класс, а в конструкторе дочернего класса вызвать родительский метод создания экземпляра singleton.

Ответ №3:

Вы также могли бы использовать функцию-оболочку следующим образом;

  function getDB() {
   static $db;
   if($db===NULL) $db = new db();
   return $db;
 }
  

Ответ №4:

Когда вы программируете на языке, который не является строгим ООП, легко использовать темную сторону силы:

 function getInstance() {
  global $singleObj;

  if (!is_object($singleObj)) $singleObj = new Foo();
  return $singleObj;
}
  

А почему бы и нет? Выглядит уродливее, чем строгий singleton? Я так не думаю.

(Также не забывайте, что PHP4 не поддерживает наследование — я потратил на это несколько часов.)

Комментарии:

1. «PHP4 не поддерживает наследование» — Извините, старый пост, но что подразумевается под этим утверждением? PHP4, безусловно, поддерживает «наследование»?