Пятница. Говнокод. Парсинг плейсхолдеров.

немножко многословно, но читается легко, и массив на ручках изначально. дох мне очень нравиться!
 
Кстати да - мог у тебя идею и подсмотреть.

Всё больше и больше мне нравится Пдошечка - в ней реализовано всё, что я хотел, но не собрался :)
Особенно мне нравится method chaining, после того как я с изумлением обнаружил, что в ПДО его нет.

Кстати, о врапперах.
я тут обнаружил от Никиты Попова... с типзованными пейсхолдераме! Авторед три года назад.
 
Фанат, возможно он даже самый правильный, драйвер вернул таблицу, крути верти для каждой модели как необходимо. но есть одно но. постоянная перекрутка готового результата, повторность логики перекрутки в разных классах.

те. еслиб драйвер возвращал не массив а Iterator mysql_result, в смысле считыванье из базы еще не имело место, то первая проблема решена (перекручиваем по чтению прям в сервисе). если все сервисы "унаследовать" от одного класса то и 2я проблема решена.

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

экономия на спичках, конечноже. но если запрос вернет пару сотен тысяч записей и задача по ходу чтению чтото делать то сохранение в массив излишне, память сожрем
 
Последнее редактирование:
WMix, кстати в 5.5 можно сдеать такую фичу:
PHP:
function fetchGenerator($field = null)
{
    while (false !== $row = $this->fetch($mode)) {
        if ($field === null) {
            yield $row;       
        } else {
            yield $row[$field] => $row;       
        }
    }

    return $this;
}
 
  • Like
Реакции: WMix
я еще не читал про "елду")) сейчас углублюсь
 
WMix, ну тот же итератор только без реального копирования всех значений
 
нагляднее и проще когда обработка данных происходит отдельно от их получения,
здесь нет цели создать инструмент для high-load на 100 тысяч серверов, не надо делать все и для всех,
есть задача - сделать безопасный инструмент в первую очередь, а экономия памяти на временных ключах массива - это не та задача, о которой стоит думать
 
клаузура решение. пусть это будет не getAll а callAll( $f ) роли не играет..
 
Последнее редактирование:
Вот кстати.
Давно хотел спросить.
Я вот думал о том, чтобы для гетОлл() просто сделать необязательным параметром кложуру.

ну да, reduce функция уместна, такое у меня тоже есть. С параметрами это обычный пример таскания того же кода со времен php4 просто потому что привык :)

про yield - ну это тот же while ($row = $db->fetch()) получится
 
  • Like
Реакции: WMix
fixxxer, это делается в самой коллекции
да, разумеется, у меня db->getAll и вызывают именно методы коллекций, это просто упрощение, чтобы не писать одинаковые обработчики, ну и заодно сэкономить на спичках не делая второй проход =)
 
fixxxer, ну я бы так не сказал) в 5.5 можно сделать так:
PHP:
foreach ($db->fetchGenerator(PDO::FETCH_NUM) as list($id, $name, $content)) {
    // ...
}
 
Сверху