Обновить
67.3

PHP *

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

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

Миниатюрное десктопное GUI приложение на PHP — 2 МБ хватит для всех

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

Я часто заморачиваюсь на тему минимизации размера своих GUI приложений. Прошлая моя статья была про Nuklear. Но сейчас захотелось более современных технологий. Чтоб HTML5, CSS3 и PHP. Чтоб приложение ни от чего не зависело, т.е. построено по принципу "всё включено". И чтоб конечный размер приложения не превысил 2 МБ. Получится ли?

В Linux я часто пользуюсь утилитой df. Мне её очень не хватает в Windows, а искать аналоги лень. Так что было сделано волевое решение сделать свою, на РНР 5, с бутстрапом и JQuery.

Читать далее

Распространенные ошибки при написании плагинов Joomla 4

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

Перевод недавней статьи профессионального PHP-разработчика, руководителя Akeeba Ltd и ведущего разработчика Akeeba Backup для WordPress, Joomla! и standalone Николаса Дионисопулоса.

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

Читать далее

Создание WebCron плагина для Joomla 4 (Task Scheduler Plugin)

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

В Joomla! появился планировщик задач начиная с версии 4.1. Он помогает автоматизировать повторяющиеся и рутинные задачи самого широкого спектра, начиная от технического обслуживания и заканчивая сложными синхронизациями по API. Планировщик задач запускает задачу, определенную в плагине, с помощью задания CRON.

Как написать плагин для выполнения задач по CRON в Joomla 4 рассказывает эта статья.

Читать далее

Тестовый контур как спасение при частых релизах

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

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

Читать далее

Как работает быстрый текстовый поиск для WordPress

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

Много лет мы (команда Epsilon Web Manufactory) занимались разработкой сайтов и разных приложений на заказ, в основном это были проекты на базе популярного движка WordPress. И как правило самой сложной и интересной задачей всегда был полнотекстовый поиск. Если на сайте были только статьи и какие-то кастомные типы записей, содержащие заголовок и основной текст, то достаточно было использовать встроенный класс WP_Query, который с небольшой подстройкой входных параметров отлично справлялся с задачей. Но это было лет 10-12 назад.

Читать далее

Использование протокола MQTT в PHP

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

Статья посвящена использованию библиотеки php-mqtt/client в PHP-проектах для реализации функций подключения, подписки, отписки, а также обмена сообщениями между MQTT-клиентом и сервером.
Читать дальше →

Статический анализ кода PHP — держите свой код под контролем

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

Сколько раз вы замечали код, который, казалось, был написан наспех? Думаю, много. Иногда он написан кем-то другим, но довольно часто ваши собственные творения, по прошествии достаточного времени, заставляют вас задуматься: «Кто, черт возьми, написал эту чушь?» Поддерживать чистоту кода нелегко, поэтому я решил представить вам несколько инструментов, которые смогут вам в этом помочь. Пришло время освежить свои знания по статическому анализу кода в PHP.

Читать далее

Мониторинг PHP-приложений с помощью OpenTelemetry и SigNoz

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

PHP является самым популярным языком для серверной разработки, по праву занимая первое место на рынке. Приложения многих всемирно известных организаций, таких как Facebook, написаны на PHP. WordPress, на котором работает 43% всех веб-сайтов, также создан на основе PHP. В этом туториале я научу вас инструментировать PHP-приложение при помощи OpenTelemetry для получения данных телеметрии.

Мониторинг PHP-приложения на предмет проблем с производительностью и ошибок очень важен. Чтобы эффективно мониторить приложение, вам нужны надежные данные телеметрии из него. И с этим нам может помочь OpenTelemetry. OpenTelmetry предоставляет клиентские библиотеки для множества языков программирования, включая PHP, которые можно использовать для инструментирования приложений.

Читать далее

Перенос музыкальной библиотеки пользователя в Yandex-музыку из Spotify после блокировки в РФ с помощью php-окружения

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

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

В сети есть способы по импорту данных из Spotify (встроенный сервис импорта существует и в Яндекс-музыке, сторонние сервисы, боты в Телеграмме), но все они работали до полной блокировки, когда сервис только объявил о своем уходе, дав какое-то время пользователям на перенос. Будучи студентом курса по php, я начал свои изыскания, итогом которых стала эта статья-инструкция, которая, надеюсь, пригодится еще не только мне.

Читать далее

Оптимизация конфигурации Dockerfile в PHP

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

В настоящее время все работает лучше при использовании Docker для настройки локальных сред, а не при локальной установке PHP и других зависимостей. Когда начинаются новые PHP-проекты, Dockerfiles (Docker-файлы) копируются из одной кодовой базы в другую, поскольку для запуска каждого проекта требуются схожие базовые зависимости. Это существенно затрудняет поддержку изменений в контейнерах.

Чтобы избежать этого, в TeleSoftas возникла идея иметь простой базовый образ, который упростил бы разработку и сопровождение наших проектов. Этот образ опубликован на DockerHub, что облегчает запуск нового проекта за счет сокращения объема необходимого кода.

Читать далее

О проблемах информационной безопасности и IT образования на примере HTML Academy

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

image


Меня всегда очень интересовала довольно грустная ситуация с языком РНР. Из неказистого шаблонного движка для веб-страничек, к середине 2010-х он вырос в мощный, современный и аккуратный язык программирования… в то время как практически все обучающие материалы в сети выставляют его всё тем же неуклюжим уродцем, который с огромным трудом, не соблюдая никаких стандартов, позволяет разве что сделать примитивную веб-страничку с кучей уязвимостей. Что, разумеется, уже давно совершенно не так. Поэтому когда на форуме РНР клуба появился пост о наборе "наставников" на курс по РНР в HTML Academy, я не раздумывая подал заявку. Чтобы посмотреть как с обстоит с этим дело на платных курсах, а так же по возможности поделиться своим опытом в этой области.


Что вам сказать? "Если хотите, чтобы вам и дальше нравилась колбаса, не берите экскурсию на мясокомбинат"

Читать дальше →

Структура модуля Magento 2

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

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

Читать далее

Создание API с использованием TDD в Laravel

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

Привет, Artisans, меня зовут Альберто Росас, я пользуюсь Laravel уже много лет, и одна из самых полезных и стоящих вещей, которые я узнал, — это создание правильных тестовых сьютов для своих приложений. Очень приятно видеть, что тестирование все чаще практикуется в сообществе Laravel, поэтому в этой статье мы начнем с основ TDD в Laravel и продолжим тему в других статьях.

Читать далее

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

Как прокачаться в PHP: 70 ресурсов из опроса русскоязычного сообщества

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

В чаты по PHP часто приходят с вопросами про развитие: какие книги стоит прочитать в первую очередь, на какие каналы подписаться, какие курсы хороши. Если повезет, в ответ чат поделится парой рекомендаций. Мы решили агрегировать их в список и собрали 150+ мнений по актуальным ресурсам для PHP-разработчика. 

Без длинных интро. Самые упоминаемые ресурсы идут первыми в разделах, а те, которые советовали новичкам, отмечены флажком 🚩. 

Читать далее

Как правильно использовать mysqli

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

image


Небольшой дисклеймер от переводчика: в РНР сложилась парадоксальная ситуация. Сам язык ушёл далеко вперёд, но изучают его по жутко устаревшим материалам. Собственно, постоянный кринж от кода на Тостере (как в вопросах, так и в ответах) и побудил к переводу данной статьи.


Кроме того, переводчик, также как и вы, считает, что PDO является более продвинутым API для работы с БД, чем mysqli. Но поскольку новички в подавляющем большинстве всё равно начинают с mysqli, то нужен хотя бы один нормальный материал по этому расширению. Не можешь противостоять — возглавь!


Не говоря уже о том, что в последнее время mysqli была сильно улучшена, и из совершенно неюзабельной превратилась в довольно сносную библиотеку, в которой из принципиальных отличий от PDO осталось разве что отсутствие именованных плейсхолдеров. Так что даже (особенно) если вы учили РНР 20 лет назад и всё знаете вдоль и поперёк, то всё равно сможете найти для себя что-то новое.

Читать дальше →

Использование WebAssetsManager Joomla 4 (Joomla 5) и добавление собственных пресетов с помощью плагина

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

В мире фронтенда многие ресурсы (ассеты) связаны между собой. В Joomla никогда не было простого способа указать эту связь, но Joomla 4 изменила эту ситуацию, введя концепцию Web Assets. Управление JavaScript и CSS в Joomla значительно упростилось, благодаря классу WebAssetManager. Есть замечательная статья Как правильно подключать JavaScript и CSS в Joomla 4, в которой подробно и с примерами кода рассказывается об этой концепции и её применении. Рекомендую ознакомиться с ней для более полного понимания сути этой статьи.

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

Читать далее

Демо Symfony конвертер валют

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

Недавно довелось делать тестовое задание на Symfony - конвертер валют с прямой и кросс-конвертацией. Получилось весьма неплохо, поэтому хочу поделиться с сообществом примером простого консольного приложения по всем канонам Symfony: DI, autowiring, тегирование сервисов, гибкая конфигурация, вот это вот всё. Надеюсь, это будет полезно начинающим "симфонистам".

Код приложения https://github.com/vladimirmartsul/symfony-exchange-demo

Приложение считает "обмен валюты" по прямым курсам (например, USD -> EUR), а также через "промежуточные" валюты (например, BTC -> EUR). Также есть фейковые курсы для тестов.

Курсы берутся с сайтов ecb.europa.eu (основные мировые валюты по отношению к EUR) и coindesk.com (BTC к USD). Триангуляция основана на принципах отсюда http://www.dpxo.net/articles/fx_rate_triangulation_sql.html. Для хранения данных используется БД SQLite.

Читать далее

Генерация строго-типизированных коллекций в PHP

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

Отсутствие коллекций — боль в заднице PHP. На данный момент нет удобного способа обеспечить безопасность типов для наборов объектов. Добавление на уровне языка поддержки дженериков или типизированных массивов - было бы наилучшим решением. Но, реализовать их сложно. Надеюсь, что когда-нибудь это случится, но, вероятно, этого придется ждать несколько лет.

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

На днях появилась мысль, как решить эту задачу с помощью генерации кода: Предположим у нас есть папка с объектами в которой находится объект name\space\SomeObject. Полного имени класса этого объекта нам достаточно, чтобы создать для нее класс коллекции name\space\collections\SomeObjectCollection. Такая коллекция может гораздо в большей степени строго-типизированной. Отдельным плюсом сталоо бы отсутствие зависимости от сторонних пакетов: т.к. код получен генерацией, а не расширением шаблона. Единственная связь, которую потребует класс коллекции – связь с классом, экземпляры которого коллекция будет содержать.

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

Читать далее

Создание сервера для онлайн ММО игр на PHP ч. 4 — Redis

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

В предыдущей статье я рассказал о протоколах клиент-серверного взаимодействия и о нагрузке которую может выдержать TCP соединения. В этой статье мы рассмотрим технологию для хранения , записи и публикации данных клиентам - Redis , разберем сколько игроков и NPC мы можем держать с демонстрацией игры, затронем архитектурные решения других игр

Читать далее