шаблон синглтона в PHP 4 - PullRequest
1 голос
/ 11 мая 2011

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

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

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

Ответы [ 4 ]

2 голосов
/ 15 февраля 2012

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

 function getDB() {
   static $db;
   if($db===NULL) $db = new db();
   return $db;
 }
2 голосов
/ 11 мая 2011

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

Это возможно, но нецелесообразно.

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

class SomeClass
{
    var $var1;

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

    /* singleton */
    function &getInstance()
    {
        static $obj;
        if(!$obj) {
            $obj = new SomeClass; 
        }
        return $obj;
    }
}
2 голосов
/ 11 мая 2011

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

1 голос
/ 11 мая 2011

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

function getInstance() {
  global $singleObj;

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

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

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

...