Как стать автором
Обновить
78.94
Рейтинг

PHP *

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

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Дженерик коллекции в PHP

PHP*
Из песочницы

Столкнулся с проблемой нормальной реализации коллекций в PHP. Доктриновские коллекции мутабельны и инвариантны. PSL коллекции инвариантны. Нигде не видел непустых коллекций. Везде меня что-то не устраивало и было принято решение написать свою open source реализацию иммутабельных коллекций с ковариантными темплейт-параметрами и выстроенной иерархией пустых и непустых коллекций. В качестве статического анализатора был выбран Psalm.

Читать далее
Всего голосов 13: ↑13 и ↓0+13
Просмотры3.2K
Комментарии 12

Новости

Показать еще

Заметки KPHP: тестирование и бенчмарки

Блог компании ВКонтактеOpen source*PHP*Программирование*

Перед вами первая статья из серии «Как использовать KPHP в open source?».


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


В сегодняшнем выпуске обсудим:


  • базовое использование composer с KPHP;
  • как писать и запускать unit-тесты для KPHP;
  • бенчмаркинг KPHP-кода (профилирование затронем в другой раз);
  • как правильно сравнивать результаты бенчмарков.

Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Просмотры1.5K
Комментарии 2

Визуальное автотестирование сайтов с помощью Codeception

PHP*Тестирование веб-сервисов*
Из песочницы

Автоматические end-to-end тесты хороши тем, что позволяют сымитировать действия пользователя на сайте. Мы можем запрограммировать в скрипте теста действия типа открыть страницу, нажать на кнопку, ввести данные в поля ввода, нажать галочки и радиокнопки, отправить форму, и ждать на выходе нужный результат. Увидел текст "Ваше сообщение принято. Спасибо" - тест пройден. В ином случае - не пройден. Все прозрачно и понятно. Можно написать автотесты на все критично важные модели поведения пользователя на сайте, перед каждым обновлением кода на боевом сервере прогонять их и таким образом значительно повысить качество разработки. Но мы пойдем еще дальше...

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Просмотры1.4K
Комментарии 1

Новости Yii 2021, выпуск 3

PHP*Yii*

Привет, сообщество!

Это в очередной раз Александр. Рад представить вам ещё один выпуск новостей про PHP фреймворк Yii. Новостей не было довольно долго, но это не потому, что ничего не происходит, а как раз наоборот: происходит всё и сразу. Над Yii3 работать всё приятней так как пакеты стабилизируются, а фреймворк становится более полным.

Читать далее
Всего голосов 21: ↑20 и ↓1+19
Просмотры3.7K
Комментарии 11

Ускорение WordPress. Тотальный разбор плагинов для кэширования. Личный опыт (часть 2)

WordPress*Разработка веб-сайтов*PHP*

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

Читать далее
Всего голосов 5: ↑3 и ↓2+1
Просмотры2.7K
Комментарии 32

Ускорение WordPress. Тотальный разбор плагинов для кэширования. Личный опыт (часть 1)

WordPress*Разработка веб-сайтов*PHP*
Из песочницы

Что делать, если сайт на WordPress грузится медленно? Ответ на самом деле прост – настрой кеширование. Можно ещё заниматься оптимизацией изображений, настройкой lazy loading и прочими хитростями. Но кеширование всё равно остаётся ключевым способом ускорения любого сайта на Вордпресс. Кажется, всё просто, зайди в Google, напиши "WordPress cache", найди статью, где больше всего картинок, скачай упомянутый в статье плагин и выстави настройки согласно скриншотам. При любом раскладе твой сайт сразу начнет работать в разы быстрей.

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

Используя бестселлеры с Themeforest или, те же конструкторы, вроде Elementor, WP Backery и прочие, сайт обречен на 5-15 секунд TTFB (time for first byte, время ответа сайта) при загрузке КАЖДОЙ страницы. С одной страницы может быть несколько сотен обращений к базе данных, выполняться большое число php-функций, подключаться множество библиотек. Естественно, что такая скорость недопустима, она влечет за собой понижение в поисковой выдаче, "отказы" посетителей, сливы бюджетов на рекламу и так далее. С этим нужно что-то делать.

Читать далее
Всего голосов 15: ↑13 и ↓2+11
Просмотры3.5K
Комментарии 7

PHP – компилируемый язык?! PVS-Studio ищет ошибки в PeachPie

Блог компании PVS-StudioPHP*.NET*Компиляторы*C#*

PHP широко известен как интерпретируемый язык программирования, использующийся в основном для разработки сайтов. Однако немногие знают, что для PHP есть ещё и компилятор под .NET — PeachPie. Но вот насколько он качественно сделан? Сможет ли статический анализатор найти в этом компиляторе реальные ошибки? Давайте же узнаем!

Читать дальше →
Всего голосов 11: ↑10 и ↓1+9
Просмотры2.7K
Комментарии 7

PHP Дайджест № 209 (1 – 16 августа 2021)

Разработка веб-сайтов*PHP*Symfony*Yii*Laravel*
Фото: Florian Engelhardt.

Подборка свежих новостей и материалов из мира PHP. В выпуске: вторая бета PHP 8.1 и много материалов об этой версии, два свежих RFC для PHP 8.2, ReactPHP и Amphp объединяют усилия над базой для асинхронного PHP. А также другие новости и релизы, порция полезных инструментов, статьи и видео.

Приятного чтения!
Всего голосов 48: ↑48 и ↓0+48
Просмотры8.3K
Комментарии 5

CodeIgniter 4: Подготовка к PHPUnit. Устанавливаем Xdebug в XAMPP (Windows 32-разрядная (x86))

PHP*CodeIgniter*
Tutorial


Благодарю за отклики


Получив разноплановые отклики в виде комментариев и «кармы» на свою первую статью на Хабре «Фреймворк на PHP: CodeIgniter 4. «Лёгкий пример» использования Database Migrations (миграций) и Seeding (посев)», особенно хочется отметить тех членов сообщества, которые разделили точку зрения автора и в своих комментариях нашли нужные слова, чтобы поддержать автора в его намерении поделиться впечатлениями, что CodeIgniter 4 — это актуально.

Читать дальше →
Всего голосов 10: ↑2 и ↓8-6
Просмотры1.5K
Комментарии 30

Allure. В поисках почти идеальной TMS

Тестирование IT-систем*PHP*Тестирование веб-сервисов*DevOps*

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

Читать далее
Всего голосов 17: ↑17 и ↓0+17
Просмотры2.5K
Комментарии 4

Создаем Конечный Автомат на PHP

PHP*Программирование*Анализ и проектирование систем*Проектирование и рефакторинг*Промышленное программирование*
Перевод

Конечный Автомат (State Machine), также называемый Automata (да, как и игра), - это концепция для разработки, организации рабочих и технологических процессов с учетом текущего «состояния» какой-то задачи, изменения её состояний и, по возможности, для автоматизации процесса.

Я объясню на примере. Предположим, что я хочу купить молоко, тогда в такая задача будет иметь примерно следующие состояния...

Читать далее
Всего голосов 17: ↑13 и ↓4+9
Просмотры7.7K
Комментарии 11

PhpStorm 2021.2: дженерики, перечисления, array shapes, новые инспекции и рефакторинги

Блог компании JetBrainsРазработка веб-сайтов*PHP*


Вышел второй мажорный релиз PhpStorm в этом году. Под катом подробный разбор всех изменений и новых возможностей с кучей гифок.
Всего голосов 36: ↑36 и ↓0+36
Просмотры7.2K
Комментарии 35

Magento 2: минимальная инсталляция и зависимости — исследование

PHP*Magento*

Я занимаюсь back-end / full-stack разработкой на Magento 2 уже 3.5 года. Все эти годы у меня никак не хватает сил и времени перетащить один свой старый (но всё еще довольно популярный) проект с убогого Web-CMS uWeb на что-то более-менее толковое, поддерживаемое и расширяемое. Идей было много - писать с нуля на Symfony, изучать Drupal и делать на нем, привлекать React JS... Но всё это требует значительных временных затрат и от этих идей приходилось отказываться.

И вот недавно мне в голову пришла другая идея: а что если использовать Magento 2 как каркас для моего кастомного проекта?..

Читать
Всего голосов 12: ↑11 и ↓1+10
Просмотры2.5K
Комментарии 12

Настройка Kafka для работы в режиме подтверждения о принятии сообщения (ack/nack)

PHP*
Из песочницы

На новом проекте, на котором я работаю в качестве PHP Tech Lead. Команда столкнулась с вопросом наведения порядков, один из которых - унификация:

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Просмотры2.2K
Комментарии 2

Отказоустойчивое взаимодействие с внешними сервисами

Блог компании ispringPHP*Микросервисы*

В этой статье я расскажу про то, как можно организовать отказоустойчивое взаимодействие с внешними сервисами. Тема актуальная, очень часто из-за недоступности какого-то одного компонента может пострадать вся система.

О чем статья:

•  Синхронное и асинхронное взаимодействие; 

•  Зависимость доступности от использования синхронного взаимодействия;

•  Способы избавления от синхронного взаимодействия;

•  Избавление от синхронного взаимодействия с внешними сервисами в PHP.

Читать далее
Всего голосов 15: ↑15 и ↓0+15
Просмотры3K
Комментарии 2

Контейнер LXC для веб-разработки как альтернатива Docker

Разработка веб-сайтов*PHP*DevOps*
Tutorial

Разговоров о Docker очень много, а вот про LXC гораздо меньше шума. А ведь у LXC есть свои области применения, где он может оказаться удобнее.

Изначально мы применили LXC для контейнеризации нашего массивного веб-приложения с длинной историей разработки с 2006 года. И с этой задачей он справился очень хорошо, нам удалось довольно быстро создать образ и упаковать всё в контейнер.

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

Читать далее
Всего голосов 11: ↑10 и ↓1+9
Просмотры5.3K
Комментарии 9

Telegram-клиент на Golang

PHP*Go*
Из песочницы
Tutorial

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

Madeline в общей массе свой очень хорошо, полностью асинхронный и имет под капотом кучу методов для работы как с ботами так и с клиентом, но есть у него одна маленькая проблема (а может и не одна ¯\_(ツ)_/¯) , встроенный EventHandler получает не все новые сообщения из постов (и да я понимаю что есть getHistory, но если бы мы брали сообщения через этот метод, все вышло бы очень медленно работающим и высоконагруженным) Долгие часы и даже дни поиска решения этой проблемы не привели к желаемому результату, все так же процент постов которые пропускались именно Madeline был слишком большим.

Ок, было принято волевое решение забить на данную библиотеку и попробовать найти что-то другое на известном нам стеке, взгляд упал на go-tdlib. Развернули либу и поехали пыхтеть в разработку, и о чудо все посты собираются и все стало чудесно, за исключением одного но... Данная библиотека от пользователя Arman92 сильно отстает от офф методов tdlib и имеет внутри несколько логических ошибок, в общем начали у нас сыпаться паники и другие неприятные вещи. Так как пути назад уже не было, перебрали мы всю либу и обновили методы а так же исправили ошибки и теперь все просто чудесно.

Читать далее
Всего голосов 5: ↑0 и ↓5-5
Просмотры3.3K
Комментарии 3

Перечисления в PHP 8.1

Разработка веб-сайтов*PHP*
Перевод

Они наконец-то появятся: поддержка перечислений будет добавлена в PHP 8.1! Пост посвящён более подробному рассмотрению нового функционала.

Читать далее
Всего голосов 20: ↑18 и ↓2+16
Просмотры7K
Комментарии 47

Миграция платежной платформы в облако: Зачем и стоит ли?

PHP*Cisco*Amazon Web Services*VueJS*TypeScript*
Из песочницы

Миграция платежной системы в облако: Зачем и стоит ли?

Привет! Наша компания занимается разработкой платформы для процессинга электронных платежей. Платформа предоставляется в аренду по White-label модели другим компаниям, которые хотят начать бизнес в области процессинга электронных платежей, при этом получив ряд “плюшек”:

- быстрый запуск;

- готовая PCI DSS ready инфраструктура;

- дополнительная поддержка, в том числе при прохождении аудита PCI DSS;

- брендирование;

- гибкая цена.

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

Будучи одними из первопроходцев на рынке решений для процессинга электронных платежей, мы построили архитектуру платформу на базе популярных на тот момент (примерно 2012 год) и хорошо зарекомендовавших себя решений - PCI DSS ready инфраструктура с аппаратными межсетевыми экранами Cisco ASA, с сегментацией сети, использовались отдельные хосты для каждой роли - фронтенд с админкой, платежными формами, API и incoming/outgoing прокси; процессинг; хосты выдачи вакантных ключей для шифрования карточных данных; хосты с реляционными БД и т.д. Стек был тоже достаточно традиционный - PHP, Apache, MySQL.

Читать далее
Всего голосов 2: ↑1 и ↓10
Просмотры1.2K
Комментарии 2

Вклад авторов