[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Singleton
johniek_comp
вот вам он
<?php 
class
Singleton {
static private $instance = NULL;

private function __construct() {
}


static public function getInstance() {
if (self::$instance == NULL) {
self::$instance = new Singleton();
}
return self::$instance;
}
}

?>


собственно зачем он нужен?
вики не помогла, там все общее обозрение написано.

как я понял он позволяет обращаться к статике и её свойствам как при создании экземпляра, но без его создания...для чего?

мчтафокс::если чего напутал не кричи();



Спустя 6 минут, 25 секунд (13.02.2012 - 19:40) vital написал(а):
Цитата
но без его создания...для чего?

ЧТо бы быть уверенным, что экземпляр класса строго один.

Спустя 7 секунд (13.02.2012 - 19:40) alexbel2404 написал(а):
Ну если ты сделаешь другие методы и свойства статическими, то можешь обращаться к ним и через ::, но смысл паттерна потеряется.

Спустя 2 минуты, 21 секунда (13.02.2012 - 19:42) johniek_comp написал(а):
vital
ооп тяжелая вещь, не поленись, распиши что да как, пожалуйста smile.gif

Спустя 1 минута, 57 секунд (13.02.2012 - 19:44) alexbel2404 написал(а):
http://habrahabr.ru/blogs/programming/136766/ найди там singleton и почитай. Но я думаю тебе до классов еще рановато.

Спустя 1 минута, 11 секунд (13.02.2012 - 19:45) Игорь_Vasinsky написал(а):
ну там же в коде всё написано - если екземпляр Не создан - создать его.

а для чего он:
Цитата
ЧТо бы быть уверенным, что экземпляр класса строго один.

например чтобы не плодить 10 коннектов к БД.


это всего лишь шаблон.

Спустя 4 минуты, 3 секунды (13.02.2012 - 19:49) redreem написал(а):

Спустя 11 минут, 25 секунд (13.02.2012 - 20:01) Bustle написал(а):
Дабы не порождать много объектов.
Например есть большой проект мне надо соединения, а может мой код уже будет работать в другой части приложения? Какой-то например модуль, и там кто-то тоже установил соединения. Получается, что порождено много объектов экземпляром данного класса. С этого нет никакого смысла.

Спустя 57 минут, 37 секунд (13.02.2012 - 20:58) johniek_comp написал(а):
разберите что не так, только без стёба :)
<?php

class
Johniek
{

public $name = 123;

function __construct()
{
$this->name = $name;
}
public function param()
{
if($this->name == 123)
{
echo $this->name;
}
}
}


$obj = new Johniek();
$obj -> param();


?>

Спустя 1 минута, 30 секунд (13.02.2012 - 21:00) Игорь_Vasinsky написал(а):
Цитата
разберите что не так

biggrin.gif а что не так?

Спустя 51 минута, 23 секунды (13.02.2012 - 21:51) johniek_comp написал(а):
не работает

Спустя 1 минута, 47 секунд (13.02.2012 - 21:53) Winston написал(а):
Цитата (johniek_comp @ 13.02.2012 - 19:58)
function __construct()
    {
        $this->name = $name;
    }

Откуда у тебя взялась $name?

Спустя 6 минут, 2 секунды (13.02.2012 - 21:59) TranceIT написал(а):
Удалил свои глупости, пока никто не видел =)

Спустя 4 минуты, 55 секунд (13.02.2012 - 22:04) TMake написал(а):
Цитата (johniek_comp @ 13.02.2012 - 20:42)
vital
ооп тяжелая вещь, не поленись, распиши что да как, пожалуйста

http://phpforum.ru/index.php?act=ST&f=142&t=51390&st=0

johniek_comp изучи книгу по ООП, по твоим умоизречениям видно что это тебе необходимо

Спустя 1 час, 7 минут, 59 секунд (13.02.2012 - 23:12) caballero написал(а):
Цитата
Откуда у тебя взялась $name?

Она возмется при присвоении значения.

Спустя 35 минут, 57 секунд (13.02.2012 - 23:48) m4a1fox написал(а):
Без комментариев! biggrin.gif

Спустя 4 часа, 15 минут, 50 секунд (14.02.2012 - 04:04) Игорь_Vasinsky написал(а):
ну что сразу так...

ТС - метод, даже конструктор - это опять же функция со своеё областью видимости.

если ты что то юзаешь внутри - то как минимум передай это в аргументе.

Спустя 9 часов, 59 минут, 5 секунд (14.02.2012 - 14:03) johniek_comp написал(а):
Ну вот, я специально класс написал с ошибкой! И получил то что и ожидал biggrin.gif
Всем спасибо за участие!

Спустя 2 часа, 20 минут, 27 секунд (14.02.2012 - 16:23) alexbel2404 написал(а):
Цитата (johniek_comp @ 14.02.2012 - 15:03)
Ну вот, я специально класс написал с ошибкой! И получил то что и ожидал biggrin.gif
Всем спасибо за участие!

И для чего? По-троллить решил?


_____________
user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.