Как на PHP получить построчную разницу между двумя файлами или строками

Довольно часть встречается задача: взять два файла или строки, сравнить их построчно и отобразить разницу. И конечно же это можно решить стандартными средствами PHP! Для PHP создано расширение xdiff, которое позволяет создавать и накатывать патч-файлы, содержащие различия между различными версиями файлов или документов. В основе этого расширения лежит библиотека libxdiff. (далее…)

Как в PHP определить путь к классу по его неймспейсу?

Достаточно нетривиальная задача: как в рантайме определить путь к файлу с классом? Может пригодиться при работе со всяким легаси-кодом, чтобы проверить, например, актуальность файла. Делается это элементарно: $reflector = new \ReflectionClass(Constants::class); $filename = $reflector->getFileName(); Наслаждайтесь!

Service Container and Dependency Injection in Symfony framework

Иногда одна единственная идея способна изменить все представление о программировании. Для меня одной из такой идей была идея сервис-контейнера. Это как золотой грааль). Вообще-то, идея не сугубо Symfony framework, это просто один из удачных паттернов проектирования приложений, часто используемый в Symfony. В двух словах и на пальцах: сервис-ориентированая архитектура позволяет регистрировать класс (сервис), который можно будет достать с любого места приложения, зная идентификатор. То есть, говорим: "Контейнер, а дай нам такой-то сервис", и получаем пригодный для использования объект. (далее…)

Коллекция полезных Bundle для Symfony

Помимо стандартного набора поставки Symfony, существует множество бандлов (Bundle) от сторонних разработчиков, которые очень упрощают жизнь при разработке приложения (действительно, зачем изобретать велосипед, если есть готовое решение). Не будем разворачивать спор по поводу нередкого присутствия в бандлах функционала, который никогда не будет использован в вашем приложении - скорость разработки покроет эти достаточно мелкие проблемы. Приведу скромную коллекцию бандлов, сильно упрощающих жизнь. (далее…)

PHP Symfony Framework: первые шаги

Как и Вы мне скорее захотелось посмотреть как работает Symfony обратившись к ней в браузере. Но, прежде чем продолжить, тем кто не знает, хочу напомнить, что Symfony изначально умеет работать как минимум в двух окружениях (режимах):

  1. dev - краткое назчание от Developer, используется для информирования разработчика о багах, аннотациях, использовании памяти и т.п.
  2. prod - краткое название от Prodaction, используется для обычных посетителей сайта, которым точно не нужно знать ничего из того, что необходимо знать программисту
(далее…)

Как на PHP определить пол по имени

Задача определения пола по имени человека на PHP решается скучно, не интересно и не спортивно. Конечно, можно было бы подключить машинное обучение, несколько недель собирать обучающую выборку и тренировать нейросеть. Но такое решение окажется слишком дорогим и ни один адекватный заказчик такое оплачивать не согласится.  Как это не удивительно, но в PHP уже имеется расширение для определения пола. Естественно, решения дающего 100% точность существовать не может. Давайте посмотрим как оно работает. (далее…)

PHP функция перевода в транслит transliterator_transliterate()

Функция перевода русского текста в транслит используется практически в каждом web-проекте. Например, это применяется для ЧПУ, генерации логина или никнейма по имени пользователя или даже для определения пола по имени! И чаще всего внутри себя представляет что-то типа:

$s = strtr($s, array('а'=>'a','б'=>'b','в'=>'v','г'=>'g','д'=>'d','е'=>'e','ё'=>'e','ж'=>'j','з'=>'z','и'=>'i','й'=>'y','к'=>'k','л'=>'l','м'=>'m','н'=>'n','о'=>'o','п'=>'p','р'=>'r','с'=>'s','т'=>'t','у'=>'u','ф'=>'f','х'=>'h','ц'=>'c','ч'=>'ch','ш'=>'sh','щ'=>'shch','ы'=>'y','э'=>'e','ю'=>'yu','я'=>'ya','ъ'=>'','ь'=>''));
Так вот, никогда так не делайте! Потому что в PHP начиная с версии 5.4 которая вышла в 2012 году уже существует расширение intl, содержащий класс Transliterator и функцию transliterator_transliterate для решения этой задачи. (далее…)

Makefile для сборки PHP проектов с использованием Composer, Docker и Git

Наверняка многие слышали, а возможно даже и пользовались командой make в Linux. Чаще всего это выглядит как такая последовательность команд:

make && make install && make clean
Как правило это нужно для сборки из исходников программ написанных на Си или Си++. Однако, кто сказал, что с помощью Makefile (так называется конфигурационный файл для команды make) нельзя собирать билды для PHP проектов? А никто не говорил, потому что можно! (далее…)

Как установить Maven

Как установить Maven на Windows?

Maven реализован на языке Java, поэтому первым делом нужно установить Java JDK. Как и многие другие Java-программы, Maven не имеет специальной программы для инсталляции, его нужно просто «скачать и распаковать».
  1. Скачать с официального сайта, берите самую последнюю версию, на выбор в формате .tar.gz или .zip (если не уверены – берите .zip).
  2. Распаковать в произвольное место. Ну, не совсем произвольное, лучше, если в пути к этому месту не будет русских букв в названиях директорий. Нельзя сказать, что Java не умеет с этим работать, просто могут потребоваться дополнительные настройки, связанные с кодировками. Поэтому постарайтесь этого избежать, используя в названиях директорий только латиницу.
Всё, Maven готов к работе! (далее…)

Как создать свой собственный генератор для Swagger Codegen

Swagger Codegen это проект с открытым исходным кодом, с помощью которого можно генерировать клиентские и серверные библиотеки на основе swagger-файлов. По сути разработчик один единственный раз описывает спецификацию своего (или даже чужого) API и одной командой генерирует серверный и клиентский код для любого поддерживаемого языка, экономя человеко-месяцы на разработку. (далее…)


Любишь мемасики?

Подпишись на мой телеграм-канал!

Открыть
Закрыть