Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
В PHP утиная типизацияС каких пор?
<?php
class Duck {
function quack() { echo "Quack", PHP_EOL; }
function fly() { echo "Flap, Flap", PHP_EOL; }
}
class Person {
function quack() { echo "I try to imitate a duck quack", PHP_EOL; }
function fly() { echo "I take an aeroplane", PHP_EOL; }
}
function in_the_forest($object) {
$object->quack();
$object->fly();
}
in_the_forest(new Duck);
in_the_forest(new Person);
Quack
Flap, Flap
I try to imitate a duck quack
I take an aeroplane
==> на /**/. От реализации этого тикета анализа кода в строке не появится, но хоть будет нормальная подсветка и проверка синтаксиса.<?php
$result = from($categories)
->orderBy(function($cat){return $cat["name"];})
->groupJoin(
from($products)
->where(function($prod){return $prod["quantity"] > 0;})
->orderByDescending(function($prod){return $prod["quantity"];})
->thenBy(function($prod){return $prod["name"];}),
function($cat){return $cat["id"];},
function($prod){return $prod["catId"];},
function($cat, $prods){return [
"name" => $cat["name"],
"products" => $prods,
];}
);
<?php
$result = from($categories)
->orderBy('name')
->groupJoin(
from($products)
->where('quantity', '_ > 0') // это уже фантазии на тему
->orderByDescending('quantity')
->thenBy('name'),
['id', 'catId'],
function($cat, $prods){return [
"name" => $cat["name"],
"products" => $prods,
];}
);
->orderByDescending($prod ==> $prod['quantity'])
->thenBy($prod ==> $prod['name']),
->orderByDescending('quantity')
->thenBy('name'),
if (is_string($v)) {
$res = isset($dict[$v]) ? $dict[$v] : null;
}
elseif (is_callable($v)) {
$res = $v($dict);
}
else ...
where(function($k, $v) {return $v['quantity'] > 0 && ($k%2 == 0);}) orderByDescending('quantity', 'sin(_)')Сейчас вы начинаете строить в уме трижды вложенные циклы, вызовы функций для массивов
А при вызове функций библиотеки сколько вложенных циклов будет? К примеру, в вашем примере какая сложность алгоритма получается?
Ведь данные хранятся в БД, соотвественно нужные данные в нужном формате можно выбрать SQL запросом, что убдет явно быстрее чем их обработка на PHP.


А по поводу математической — нет.
а вот нативный
Если решать задачу с использованием SQL запроса — то еще быстрее.
не учитывая хайлоад приложения

Мера О та же самая. Коэффициенты и константы, разумеется, отличаются.
Вот с сортировками правильными
2. Погонял туда-сюда числа продуктов и категорий — соотношение скорости между голым PHP и YaLinqo сохраняется, так что остаюсь убеждённым про тот же порядок сложности.
PHP и хайлоад в одном предложении — признак недальновидности.
сложность состоит в убогом парсере
(new Foo)->baz()!foo()['baz']!
YaLinqo (LINQ to Objects для PHP) — версия 2.0