да но звучать будет современней, привычней, человечней...про yield - ну это тот же while ($row = $db->fetch()) получится
PHP:
foreach($db->getAll(...) as $row){}
Последнее редактирование:
да но звучать будет современней, привычней, человечней...про yield - ну это тот же while ($row = $db->fetch()) получится
foreach($db->getAll(...) as $row){}
function getAll() {
$data = array(
array('a' => 1),array('a' => 2),array('a' => 3)
);
foreach($data as $key => $val ) {
yield $key => $val;
}
}
$data = getAll();
echo $data[1];
Fatal error: Cannot use object of type Generator as array in [...][...] on line 10
/* Precedence: lowest to highest */
...
%right '='
...
%nonassoc IN_P
...
%nonassoc NOTNULL
%nonassoc ISNULL
%nonassoc IS /* sets precedence for IS NULL, etc */
Ну это так, мысли вслух: если достаточно продвинутая библиотека подстановки значений захочет автоматически менять в запросе оператор равенства на оператор IS NULL или оператор IN в зависимости от типа подставляемого значения, то не надо забывать, что приоритет и ассоциативность у этих операторов разная.Я, например, не понял.
Не стоит такую магию городить, багодром гарантирован.достаточно продвинутая библиотека подстановки значений захочет автоматически менять
WHERE field = s:#value (вместо стандартного s:value)
при value=null будет WHERE field IS NULL
при value=array будет WHERE field IN (...)
Ну да, либо с флагом, либо вообще автоматически. Не уверен, что видел где-либо автоматическую замену = на in(...), но вот автоматическая замена = на is [not] null таки есть в библиотеке yaff-db, которую я выше упомянул. Я просто несколько протупил, она здесь на форуме вроде не обсуждалась, мне Фанат в личку ссылку кидал.Sad Spirit, Я пока ни за ни против, просто уточнить.
Добавив некий флаг, плейсхолдер будет обработан по особому?
Во - теперь будет проходить!Господа, а вот такие тесты https://github.com/doctrine/dbal/blob/master/tests/Doctrine/Tests/DBAL/SQLParserUtilsTest.php#L16 ваши парсеры плейсхолдеров проходят?