Форум → Программирование → PHP для идиотов → PHP и ООП → Оправданность использования статических методов
Оправданность использования статических методов
Страницы: ← Следующая страница →
-
-
-
26 января 2009 г. 19:38, спустя 5 минут 2 секунды
статический и синглтон - в корне разные вещи …
синглтон часто например соединение с бд, а статический - класс раномизации, когда он не использует внутренние переменые и тп, он просто "набор тулз" для генерации паролей, имен, емайлов или тп, записи файлов, копирования, удаления или тп.
определись что у перед тобой, потом думай :)Сапожник без сапог -
26 января 2009 г. 19:41, спустя 2 минуты 57 секунд
Можна сделать один синглтон а в нём уже куча классов для базы и прочей лабуды. Я думаю в этом случае как раз он ему и нужен -
26 января 2009 г. 19:41, спустя 13 секунд
Вот что:class Languages
{
private static $_config = null;
private static $keys = array();
public static function config($config)
{
if (self::$_config == null)
{
self::$_config = $config;
if (is_readable(self::$_config['dir'] . '/' . self::$_config['lang'] . '.php'))
include_once self::$_config['dir'] . '/' . self::$_config['lang'] . '.php';
else
Messages::add('Language file not found');
}
else
{
$msg = self::parse('static_cofig');
Messages::add($msg);
}
}
public static function parse($key, $cat = 'sys')
{
if (isset(self::$_keys[$cat][$key]))
return self::$_keys[$cat][$key];
else
{
$msg = self::parse('lang_parse_error');
Messages::add($msg);
}
}
} -
26 января 2009 г. 19:47, спустя 6 минут 11 секунд
self::$_config['dir'] . '/' . self::$_config['lang'] . '.php'
вот это на самом деле сраный костыль. тут надо сингтон все-таки :)Сапожник без сапог -
26 января 2009 г. 19:48, спустя 59 секунд
class Base
{
private static $_instance = null;
public static function get_instance()
{
if (Base::$_instance == null)
{
Base::$_instance = new Base();
}
return Base::$_instance;
}
}
А потом Юзай в любом месте сайтаBase::get_instance()->some_function();
или гетер, короче всё что надо -
26 января 2009 г. 19:49, спустя 8 секунд
Почему? =) Все работает. Мне нужен повод чтобы переписать =) И в чем тут костыль? -
-
26 января 2009 г. 19:50, спустя 1 минуту 3 секунды
P.S. можешь добавить в __construct$this->Language = new Language;
и соотвественноBase::get_instance()->Language->parse('blabla');
-
-
26 января 2009 г. 19:52, спустя 1 минуту 25 секунд
phpdude, я так понял, костыль в том, что идет обращение к свойству? -
26 января 2009 г. 19:59, спустя 7 минут 1 секунду
костыль в том, что ты используешь статическое свойство. да, работает конечно, но имхо это неправильно.
Почему? =) Все работает. Мне нужен повод чтобы переписать =) И в чем тут костыль?Сапожник без сапог -
26 января 2009 г. 20:10, спустя 11 минут 16 секунд
Ладно, переделал =)class Languages
{
private static $_instance = null;
private $_config = null;
private $keys = array();
public static function instance()
{
$class = __CLASS__;
if (self::$_instance == null)
self::$_instance = new $class();
return self::$_instance;
}
public function config($config)
{
if ($this->_config == null)
{
$this->_config = $config;
if (is_readable($this->_config['dir'] . '/' . $this->_config['lang'] . '.php'))
include_once $this->_config['dir'] . '/' . $this->_config['lang'] . '.php';
else
Messages::add('Language file not found');
}
else
{
$msg = $this->parse('static_cofig');
Messages::add($msg);
}
}
public function parse($key, $cat = 'sys')
{
if (isset($this->keys[$cat][$key]))
return $this->keys[$cat][$key];
else
{
$msg = $this->parse('lang_parse_error');
Messages::add($msg);
}
}
private function __construct() {}
private function __clone() {}
}
Есть еще какие-нибудь замечания по классу? =)
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!