Блог хеллоуворлдщика

Категория [PHP]


Библиотека для работы с Nested Set в Doctrine ORM

Опубликовал библиотеку, которая помогает работать с Nested Set Tree. Пока что не реализован весь функционал, но можно уже пользоваться тем, что есть. Постепенно буду его добавлять и улучшать.

Ссылка на репозиторий: https://github.com/bupy7/doctrine-nested-set

Читать далее

Многоязычность или мультиязычность в PHP

Многие сталкиваются с такой проблемой, как поиск подходящего решения в решение вопроса с мультиязычностью и переводами в целом. Мало кто знает, но в PHP есть такое расширение Intl, которое из коробки поддерживает различные фичи связанные с переводами, форматированием и прочими плюхами полезными не только для мультиязычных проектов, но и одноязычных тоже. Все это называется - интернационализация. И сегодня я хочу осветить такой вовсе не странный и весьма простой вопрос с переводами. Дак, как же все-таки сделать это просто, быстро и безболезненно? Читайте дальше! =)

Читать далее

SELECT COUNT(*) FROM (sub_query) в Doctrine 2

Не мог не заметить, какое количество вопросов по этому поводу, т.к. сам когда-то искал на это ответ. Проблема в том, что хорошего ответа нет.

Если у вас сложный запрос и вам нужно получить по нему COUNT(*), то в сети можно найти вариант вида:

$subQuery = $qb->select('main.id')
    ->from('Order\Entity\Order', 'main')
    ->where('main.published = :published')
    ->setParameters([
        'published' => true,
    ]);
 
$qb->select('COUNT(o)')
    ->from('Order\Entity\Order', 'o')
    ->where($qb->expr()->in('o.id', $subQuery->getDQL()))
    ->setParameters($subQuery->getParameters());

Но такой запрос очень медленный. Он подойдет для незначительного объема данных.

Читать далее

Изолированный запуск тестов Codeception

Изолированный запуск тестов Codeception

Данное решение подойдет только для тех, кто разбил тесты на модули, а не тестирует сразу весь проект.

Когда ваш проект большой и все ООП, то это кушает много памяти. А вы еще, как на зло, заюзали некогда очень популярный среди разработчиков на PHP - Codeception. Я не буду здесь критиковать Codeception, личный выбор каждого, но, ИМХО, если встанет выбор между Codeception и PHPUnit, то выбирайте второе. ;) Но, здесь мы собрались по другой причине...

Причина написания данной статьи является выход таймаута или переполнение памяти при запуске тестов, что никак не решается в Codeception из коробки, но прекрасно решается в PHPUnit.

Но, все решаемо и я поделюсь с вами небольшим куском кода, который вы можете доработать, или использовать, как есть.

Читать далее

Генератор HTML форм или HTML Builder для PHP

Генератор HTML форм или HTML Builder для PHP

Все full stack девелоперы вынуждены/любят (нужное подчеркнуть) работать с фронтом. И там, где на проекте отсутствует фронт отдельным приложением мы используем html билдеры. Как правило, каждый фреймворк оснащен своим билдером, но иногда этот билдер может оказаться не таким функциональным или удобным, как хотелось. А иногда и вовсе отсутствует. И здесь, как всегда, я натыкаюсь на "необходимость".

Build Status Coverage Status

Читать далее

XML конструктор

Понадобилось создать запрос в формате application/xml/text/xml? Или создать sitemap.xml? И ты в поисках обертки над XMLWriter? Тогда, ты её уже нашел!

Данная обертка позволяет создать XML файл из массива без особой возни и скромной затратой времени.

Build Status Coverage Status

Ссылка на GitHub: https://github.com/bupy7/xml-constructor

Читать далее