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

Записи с тегом [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());

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

Читать далее

Как Symfony положила болт на пользователей

Как Symfony положила болт на пользователей

Короткая заметка о том, как заработать геморрой и панические атаки по ночам.

В компании, в которой я сейчас работаю, на основном проекте была версия PHP 7.1. Уже подходит время к релизу стабильной версии 7.3, что, лично для меня, сигнал обновить проект до 7.2.

В проекте около 67 сторонних PHP-пакетов, где 4 из них от Symfony. Я очень люблю и уважаю Symfony за такие замечательные пакеты, как filesystem, finder и особенно console, а также за их огромный вклад в Open-Source и PHP комьюнити, но я не понимаю, как можно так относиться к пользователям?

Читать далее

Изолированный запуск тестов 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

Читать далее

Ипользуем PhpBrew в Mac

В этой статье я бы хотел затронуть очень важную тему версионности PHP. Каждому разработчику часто бывает необходимо иметь несколько версий PHP на борту для разработки. Можно обходиться классическим способом стряпать всё самому, а можно использовать подручные стредства упрощающие решение задачи. Именно поэтому, я и хочу поговорить о PhpBrew.

PhpBrew - это сборщик и установщик различных версий PHP в домашней директории. Он так же умеет быстро переключать необходимые версии PHP одной командой. Более подробно: https://github.com/phpbrew/phpbrew

Сегодня мы соберем и установим вместе PHP версии 5.4.41. Поехали!

Читать далее