#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, безусловно, поддерживает «наследование»?