[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите понять метод
sc2r2bey
начал базовый принцип ООП, решил для лучшего понимания разобраться в работе готового скрипта, и вот наткнулся на такой метод,
в начале класса объявдена переменная
 private static  $instance;

и в классе идет обращение примерно такого содержания
 $inConf = cmsConfig::getInstance();

сам метод выглядит так:
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self;
}
return self::$instance;
}

помогите понять что он выполняет и как он работает?



Спустя 1 час, 11 минут, 35 секунд (8.06.2011 - 07:57) inpost написал(а):
sc2r2bey
Выглядит на синглтон, создаёт еденичное соединение с БД, и далее работает от него.
В начале $instance пустое, но при первом обращении - что-то там запускает = new self; При следующих обращениях уже будет работать с результатом данной команды, а не дёргать её каждый раз.

Спустя 3 дня, 6 часов, 43 минуты, 19 секунд (11.06.2011 - 14:40) Krevedko написал(а):
синглтон

Спустя 1 день, 2 часа, 18 минут, 43 секунды (12.06.2011 - 16:59) sc2r2bey написал(а):
это хорошо или плохо?

Спустя 33 минуты, 18 секунд (12.06.2011 - 17:32) inpost написал(а):
sc2r2bey
Ты предлагаешь поднять вопрос о том, что круче, процедурка или ооп? Это один из приёмов ООП, если он существует, значит он нужен в ООП.

Спустя 3 часа, 10 минут, 13 секунд (12.06.2011 - 20:42) sc2r2bey написал(а):
а какую функцию выполняет self?

Спустя 1 час, 42 минуты, 16 секунд (12.06.2011 - 22:24) inpost написал(а):
sc2r2bey
обращение к самому себе, свои методам или свойствам. Что в данном случае делается - не понял :)

Ну вот в качестве примера того же сингл-тона, наследуем другой класс и используем коннект. Показываю только в образовательно-объяснительных целях:

class DB extends MySQLi {
private static $instance;
public static function _($server = NULL,$user = NULL,$password = NULL,$db = NULL)
{
if(!self::$instance)
{
$cn = __CLASS__;
self::$instance = new $cn($server,$user,$password,$db);

/* change character set to utf8 */
if (!self::$instance->set_charset("utf8"))
die("Error loading character set utf8: ".self::$instance->error);

return true;
}
else
return
self::$instance;
}
}

Спустя 11 часов, 27 минут, 31 секунда (13.06.2011 - 09:52) linker написал(а):
self используется для обращения к своему классу.
Быстрый ответ:

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