Форум → Программирование → PHP для идиотов → Моя версия реестра — lazy registry.
Моя версия реестра — lazy registry.
Страницы: ← Предыдущая страница • Следующая страница →
-
13 марта 2010 г. 13:11, спустя 15 минут 24 секунды
что приходит на ум:
- значения уровня сессии: "корзина" в магазине, последние просмотренные темы или загруженные картинки.
- значения уровня приложения: список пользователей онлайн, канал чата
меня завораживает сам факт, что эти штуки можно добывать как кролика из шляпы, без видимых выкрутасов
конечно придется учитывать особенности сериализации объектов, если это будут объекты. я поковыряю тему…ιιlllιlllι унц-унц -
25 марта 2010 г. 12:21, спустя 11 дней 23 часа 9 минут
вопрос - както надо наложить на это еще интерфейсы, я вот думаю сижу над этим првктически в данный момент
есть функция class_implements. можно сделать что-то типа
$router = Qb::get('router');
if (!array_key_exists('IQbRouter', class_implements($router)))
die('not a router');
ну и, конечно, зашить такие проверки в сам "реестр". придумать нотацию для конфига вроде:
array(
//…
'router' => array ('MyProgressiveThing', 'interface'=>'IQbRouter'),
// …
Update: или типа так:
class Qb
{
// …
public static function get($name, $iface)
{
// …
if (!array_key_exists($iface, class_implements($result)))
throw new Exception('Fuck!!! '.$name.' is not an '.$iface);
return $result;
}
}
// …
$router = Qb::get('router', 'IQbRouter');ιιlllιlllι унц-унц -
-
-
26 марта 2010 г. 13:41, спустя 1 день 59 минут
я когда тестировал instanceof былопиздошенсбит с толку
[tt]$router instanceOf 'IQbRouter'[/tt] — ошибка времени компиляции
[tt]$router instanceOf IQbRouter[/tt] — нормалёк
ну я и забИл
на самом деле непонятно чем плоха строка, с переменной всё ok
[tt]$iface = 'IQbRouter';[/tt]
[tt]$router instanceOf $iface[/tt] — нормалёк
итого:
public static function get($name, $iface)
{
// …
if (! ($result instanceof $iface))
throw new Exception('Fuck!!! '.$name.' is not an '.$iface);
return $result;
}ιιlllιlllι унц-унц -
25 марта 2010 г. 13:19, спустя 23 часа 38 минут 26 секунд
это ж php, не стоит удивляться) Я сам на строке попадался пару раз. -
-
25 марта 2010 г. 13:49, спустя 21 минуту 43 секунды
это же конструкция языка, а они так себе реализованы
это ж php, не стоит удивляться) Я сам на строке попадался пару раз.
вот ещевам прикол
Example #4 Comparing return value of include
<?php
// won't work, evaluated as include(('vars.php') == 'OK'), i.e. include('')
if (include('vars.php') == 'OK') {
echo 'OK';
}
// works
if ((include 'vars.php') == 'OK') {
echo 'OK';
}
?>Сапожник без сапог -
25 марта 2010 г. 22:59, спустя 9 часов 10 минут 5 секунд
Я прошу прощения, но нахуй оно нужно то?)))Спустя 13 сек.ЗЫ 2300 -
26 марта 2010 г. 3:22, спустя 4 часа 23 минуты 2 секунды
проваливай, если не понимаешь :)
Я прошу прощения, но нахуй оно нужно то?)))Спустя 13 сек.ЗЫ 2300Сапожник без сапог -
8 апреля 2010 г. 10:52, спустя 13 дней 6 часов 29 минут
Новая дема http://pyhapyha.ru/blog/Qb/74.html
=>
registry::getComponent(name, intefrace)
запуск приложения цепочкой x::init()->dance()->vodka()->xxx()
обращение к registry через $component->var
события beforeBar, onBar, afterBarιιlllιlllι унц-унц -
20 июня 2010 г. 14:34, спустя 73 дня 3 часа 42 минуты
array(
//…
'router' => array ('MyProgressiveThing', 'interface'=>'IQbRouter'),
// …
слушай, а что если взять и удалить отсюда эту проверку? Ну сам посуди, зачем твоему `Qb` разбираться в том кто там что имплиментит? Все равно ты внутри классов-реципиентов будешь указывать нужный тип:class Foo
{
public function setBar(Bar $bar)
{
}
}
то есть проверка на соотв. типу будет и так произведена -
21 июня 2010 г. 6:48, спустя 16 часов 13 минут 35 секунд
это не факт, что она будет куда-то подставляться. вот такой вариант возможен:
Components::get('db')->commit();ιιlllιlllι унц-унц -
22 июня 2010 г. 3:09, спустя 20 часов 20 минут 47 секунд
Читал 1 и надеюсь последнюю странцу, но могу сказать КАкой это нах рееестр….., который делает instanse of object. Или тебе 1. нада срочно перечитать (щас будетмногго слов) пттерны или 1 пункт повторить. -
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!