Форум → Программирование → PHP для идиотов → PHP и ООП → Свой pastebin
Свой pastebin
Страницы: ← Предыдущая страница • Следующая страница →
-
7 июня 2010 г. 23:03, спустя 30 минут 5 секунд
ну скорее "адаптер". вобщем цель развязать способ хранения и логику "кеширования" текстов. плюс сервис локатор позволяет создавать только те экземпляры парсеров, какие понадобятся в этом сеансе работы и не связывать код с конкретной имплементацией парсераιιlllιlllι унц-унц -
7 июня 2010 г. 23:05, спустя 1 минуту 21 секунду
artoodetoo, может лучше по пиву?)Сапожник без сапог -
-
-
7 июня 2010 г. 23:12, спустя 2 минуты 18 секунд
я только не могу вкурить, че это будет. Фронтенд для Geshi?
неправильный подход. это geshi для pastebin, а не наоборот :) класс PastebinModel ничего не знает о Geshi.ιιlllιlllι унц-унц -
8 июня 2010 г. 0:09, спустя 57 минут 15 секунд
artoodetoo, поэтому и надо чтобы интерфейса парсера отдавал иды доступных парсеров, или пользователи наугад будут подбирать ид? -
8 июня 2010 г. 0:47, спустя 37 минут 39 секунд
Я еще не описал как будет инициироваться PastebinParserLocator. Вероятно какой-то список парсеров будет. Вот кто даст этот список, тот и в пользовательский интерфейс этот список предоставит.
Я пишу модель. Что ты привязался с тем что видит пользователь! Мне до пизды.ιιlllιlllι унц-унц -
8 июня 2010 г. 0:50, спустя 3 минуты 25 секунд
О? Вкусно? А то водка с салом уже поднадоела… :)
у меня квас :) и водка. -
8 июня 2010 г. 0:59, спустя 8 минут 53 секунды
Я еще не описал как будет инициироваться PastebinParserLocator. Вероятно какой-то список парсеров будет. Вот кто даст этот список, тот и в пользовательский интерфейс этот список предоставит.
Я пишу модель. Что ты привязался с тем что видит пользователь! Мне до пизды.
Аааа, ну ладно, я наверно тебя не так понял сразу. -
8 июня 2010 г. 1:32, спустя 32 минуты 55 секунд
Ну вот как может выглядеть инициализация сервис локатора
PastebinParserLocator::init(array(
'text' => 'MyPlainParser',
'php' => 'MyPhpParser'));
Главный метод PastebinModel
// returns html:string
public function parse($text, $parserId, $userId)
{
$this->id = $this->_hash($text, $parserId);
$exist = $this->backend->load($this->id);
if (!$exist) {
$parser = PastebinParserLocator::getParserById($parserId);
$html = $parser->parse($text, $parserId);
$this->backend->save($this->id, $parserId, $text, $html);
$this->backend->log($this->id, $userId, microtime(TRUE));
} else {
$html = $exist['html'];
}
return $html;
}
Набросал тест. В качестве бекенда сделал простейший файловый прибамбас. И пару парсеров.
См. вложение.ιιlllιlllι унц-унц -
8 июня 2010 г. 1:35, спустя 2 минуты 44 секунды
artoodetoo, фу блядь, опять эти блядские массивы, буэээСапожник без сапог -
8 июня 2010 г. 1:38, спустя 3 минуты 48 секунд
эти изумительные массивы. лучшее, что есть в блядском пэхапэιιlllιlllι унц-унц -
8 июня 2010 г. 1:50, спустя 11 минут 16 секунд
эти изумительные массивы. лучшее, что есть в блядском пэхапэ
поддерживаю
а еще я думаю надо парсер локатор передавать так же как и бэкенд - инъекцией бля… -
8 июня 2010 г. 7:50, спустя 5 часов 59 минут 56 секунд
ты предлагаешь заменить Dependency Lookup: Pull approach на Dependency Lookup: Push approach )))
тот же Х, только вид сбоку. читать здесьιιlllιlllι унц-унц -
8 июня 2010 г. 8:15, спустя 25 минут 6 секунд
Может ты и прав, kostyl.
А что если убрать класс локатора, а поиск парсера засунуть в сам главный класс. Инициировать всё в одном месте, типа:
$myParserClasses = array(
'text' => 'MyPlainParser',
'php' => 'MyPhpParser');
$pastebin = new PastebinModel(MyPBBackend, $myParserClasses);
на что ортодоксальные ООП-ники скажут "это противоречит Single responsibility principle".ιιlllιlllι унц-унц
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!