Как стать автором
Обновить
68.6

PHP *

Скриптовый язык общего назначения

Сначала показывать
Порог рейтинга
Уровень сложности

CryptoProBuilder — fluent-интерфейс для КриптоПро на PHP: подпись, шифрование и работа с контейнерами

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров874

КриптоПро предоставляет мощные, но неудобные для автоматизации утилиты. CryptoProBuilder — это fluent-интерфейс на PHP, который упрощает подписание, шифрование и работу с сертификатами, без необходимости использовать сложный SDK.

Читать далее

Новости

Грехи программиста: MVC

Уровень сложностиПростой
Время на прочтение28 мин
Количество просмотров5.2K

Использование MVC — это удобная отправная точка для небольших и средних проектов. Он прост, широко понятен и поддерживается большинством фреймворков. Однако по мере роста продукта MVC становится архитектурным тормозом: он нарушает принципы модульности, затрудняет тестирование и ведёт к плотной связанности компонентов.

Читать далее

Как я прокачал английский до B2 в США, разработав своё языковое приложение

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров11K

После переезда в США мой английский был на уровне A1. Вместо курсов и приложений я решил создать собственный языковой тренажёр и заодно прокачать себя как fullstack-разработчика. В статье рассказываю как я парсил словари, получил бан, внедрил геймификацию и достиг уровня B2 за год.

Читать далее

Fluent CLI в PHP: Создаём консольные команды с __call и никаких танцев с бубном

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров926

PhpFluentConsole — библиотека для лаконичного выполнения системных команд в PHP, с поддержкой кодировок, обработкой вывода и гибкой архитектурой. В статье — примеры, код и реальные кейсы.

Читать далее

События vs сообщения. Понимаете ли вы разницу и почему это важно?

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров5K

«Будем отправлять события в Rabbit!» Фраза, которая выдает мышление, рождающее код, полный боли. К сожалению, я ее часто слышу. Поэтому, уже много лет размышлял о написании этой статьи и безумно рад, что у меня, наконец, дошли до нее руки.

В статье я расскажу, как смешение понятий события, сообщения и транспорта рождает возгласы типа «Я ненавижу использовать Symfony Messenger, потому что был у меня проект на нем, и он не взлетел!»

Будут косвенно затронуты компоненты Symfony Messenger и Event Dispatcher. Несмотря на это, данный материал может оказаться полезным и для разработчиков, использующих другие фреймворки и даже другие языки.

Читать далее

PHP и Laravel дайджест новостей за май 2025 года

Время на прочтение6 мин
Количество просмотров1.9K

Привет, Хабр!

Сергей Пантелеев и Данил Щуцкий собрали новости за май в PHP и Laravel. Всё самое интересное. Если вы хотите быть в теме происходящего, этот материал точно для вас. 🚀

Читать далее

Как мы создали универсальную систему комментариев и рейтингов с полиморфными связями в Laravel

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров817

Привет, Хабр! Сегодня хочу поделиться опытом создания универсальной системы для работы с пользовательским контентом, которая позволила нам избежать дублирования кода и создать масштабируемое решение.

Читать далее

Observable, random_bytes() и outbox. Материалы с Пыхап #4

Уровень сложностиСредний
Время на прочтение1 мин
Количество просмотров376

Свежие доклады о PHP, игра «Было/не было», факап-разгоны и розыгрыш слонов — так прошел четвертый Пыхап, который мы с каналом Пых организовали в офисе Lamoda 19 июня. Делимся материалами со встречи.

Чтобы не пропустить новые митапы от Пых, следите за анонсами и трансляциями в Telegram-канале, на YouTube и VK. А 19 сентября приглашаем на Пых.конф’25 — новую PHP-конференцию для всех.

Читать далее

Open Source: Галерея готовых решений + Telegram-бот для брифов

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.4K

В рамках инициативы поддержки и популяризации open-source в России, я выложил в открытый доступ минимально жизнеспособную версию (MVP) своей галереи готовых решений, которая призвана упростить запуск проектов для малого бизнеса, разработчиков и энтузиастов.

Если объяснить просто — это некий аналог WordPress, но не для сайтов, а для готовых решений и данных, которые можно устанавливать и разворачивать буквально за пару минут.

Первое опубликованное решение — Telegram-бот для автоматического сбора брифов от клиентов.

Читать далее

Тестирование производительности c PHPBench: что и как?

Время на прочтение10 мин
Количество просмотров1K

PHPBench - это, кажется, крайне не популярный фреймворк для тестирования производительности кода на PHP. По крайней мере за 18 лет он мне ни разу нигде не встретился, а услышал об нём примерно года назад. Фреймворк PHPUnit-подобный, где бенчмарки, как и тесты из PHPUnit объединяются в классы, группы и т.д. и т.п. Чтобы много не болтать, давайте напишем чуть кода и отбенчмаркаем его.

Я пошагово опишу всё, чтобы вы могли быстро повторить всё это у себя. Вначале создаём директорию в которой будем химичить и переходим в неё:

Читать далее

Собираем трейс в Laravel и отправляем в Zipkin

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров875

Привет, Хабр! Меня зовут Александр Белышев. Хочу немного вам рассказать о библиотеке (Laravel Zipkin Tracer), которую разработал изучая трейсинг в php. Рассмотрим что собирает, как собирает и сравним ее с OpenTelemetry.

Читать далее

DevOps-настройка проекта через фрилансера: мой опыт

Время на прочтение6 мин
Количество просмотров1K

Когда наш стартап на базе платформы FreelanceSpace перерос первоначальный этап, перед нами встал вопрос об автоматизации процессов разработки и деплоя. Раньше мы вручную собирали и выкатывали обновления, но с ростом нагрузки это становилось узким местом. При этом внутри команды не было DevOps-специалиста, и я понял, что самостоятельно не справлюсь — нужен сторонний эксперт. Решение пришло само собой: найму фрилансера с нужными навыками. В качестве площадки для поиска я использовал собственный сайт FreelanceSpace – IT-фриланс-платформу, «№1 для быстрого подбора разработчиков, дизайнеров и копирайтеров»

. Здесь можно было быстро разместить задание и собрать отклики.

Поиск и выбор исполнителя

Я начал с составления краткого описания задачи (в DevOps-терминах это была настройка CI/CD-процессов: сборка, тестирование и деплой). Затем проанализировал несколько вариантов поиска специалиста:

Биржи фриланса. На крупных площадках (например, Upwork или аналогах) легко найти DevOps-инженеров. Как советует опытный специалист, при подборе лучше ориентироваться на рейтинг: «чем он выше, тем лучше»

. Я изучил профили нескольких фрилансеров, особенно смотрел отзывы и выполненные проекты.

Тематика и опыт. Обращал внимание на конкретные технологии в портфолио (Docker, Kubernetes, Jenkins/GitHub Actions и пр.) – мне был важен опыт именно в CI/CD.

Коммуникация. Пообщался с несколькими кандидатами, чтобы оценить, как они понимают задачу. При первой же беседе заметил, кто задаёт уточняющие вопросы и предлагает идеи – такие специалисты внушали больше доверия.

Читать далее

Загадочный параметр $live_site в configuration.php Joomla. Зачем он нужен?

Время на прочтение2 мин
Количество просмотров687

Давным-давно, когда Joomla ещё была маленькой, в неё внедрили параметр $live_site. В ней хранился домен текущего сайта на случай, если Joomla не могла его определить из-за неверной настройки сервера. Нужно это было для разных SEO-компонентов, для использования редиректов и т.д.

Со временем для работы собственно сайта этот параметр перестал быть нужным. Уже в начале 2010-х стали встречаться рекомендации оставлять этот параметр пустым, дабы оный не привёл к лишним проблемам и путанице. Тем более, в web-админке нет места, где его можно указать или посмотреть его значение. Только в configuration.php, а туда смотрят не часто.

Однако, параметр всё же остался в ядре Joomla. Зачем он нужен?

Читать далее

Ближайшие события

Из боли в удобство: обёртка для расписания пар в колледже (сайт, ВК-бот и SMS)

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров865

Или как я доставлял расписание студентам в новом формате решая несколько проблем, используя парсинг и PHP 7 в 2017-2021 годах.

Читать далее

Анемичные модели с логикой в сервисах: плюсы и минусы одного из самых популярных подходов к разработке на PHP

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2.5K

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

Читать далее

strlen() vs mb_strlen(): Почему 71% PHP-разработчиков ошибаются

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.8K

 В этой статье разберем, как PHP работает со строками и почему даже простой вызов strlen() может привести к неожиданным результатам. На примере крайне простой задачи "что выведет echo strlen('привет!');" посмотрим, что и как влияет на подсчет длины строки, заглянем внутрь реализации strlen() и развенчаем миф о строках как массивах.

Задача в телеге

В одной группе телеграмма с задачами по PHP недавно встретил простой вопрос: что выведет код «echo strlen(‘привет!’);»?
Был вопрос и 4 варианта ответа.

Вроде бы все просто. Но правильно ответили лишь 16%. Наиболее популярным ответом оказался «7», что неверно. Но именно его дали 71% ответивших.

Читать далее

Claude 3.5 Sonnet в роли AI-агента: тестирую работу в цикле с реальным выполнением кода

Время на прочтение7 мин
Количество просмотров1K

Вчера тестировал мой агент DepthNet на реальных моделях. Это что то вроде "операционной системы для LLM моделей" В прошлой статье пользователи просили привести диалоги, и рассказать подробнее, и тогда я решил более полно осветить вопрос.

Читать далее

No exceptions культ — Rift Miniframework

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров1.3K

В мире php-ходящих есть мнение, что первое, что сказал Иисус Христос придя в этот мир: "исключения - зло".

Конструкция по типу try { .. } catch (Exception $e) { ..$e->getMessage() } знакома каждому 5 человеку в мире и воспринимается как неотъемлемая часть любой логики на php.

И что в этом такого?

Ничего, кроме того, что из чёткой цепочки обработки запросов ваш код быстро превращается в коллекцию try catch на каждой 3 строке. Это не кажется проблемой до того момента, как дело не дойдёт до разделения приложения на отдельные слои во благо SOLID. Представьте, что в вашей команде >1 человека и все они работают над разными слоями, которые должны между собой взаимодействовать. В подобных ситуациях все участники должны документировать все созданные методы, а так же возвращаемые исключения. И да, это хорошо, но зачастую документация исключений становится невыносимой. Таким образом ваша работа обрастает ненужным слоем прокидывания исключений, которые к слову нужно ещё и создать.

Читать далее

Мосты цифрового мира: клиент-сервер, сервер-сервер

Уровень сложностиПростой
Время на прочтение26 мин
Количество просмотров1.2K

С развитием технологий, мир стал более взаимосвязанным. Сердцем этой взаимосвязи являются коммуникации между различными устройствами и системами. В данной статье мы рассмотрим два основных типа взаимодействий: клиент-сервер и сервер-сервер. 

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

Читать далее

Я создал AI-агента, который думает 24/7 и выполняет реальный код. Вот что из этого вышло

Время на прочтение6 мин
Количество просмотров42K

Создал экспериментальную систему DepthNet, где AI-агент мыслит циклично, то есть непрерывно, может выполнять PHP-код, управлять своей памятью и живет автономной цифровой жизнью. Протестировал на Claude 3.5 Sonnet — результаты понравились.

Читать далее
1
23 ...