Обновить
67.3

PHP *

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

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

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

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

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

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

Ты решил написать свой фреймворк. Стоило оно того?

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


Как говорили классики, «я знал, что рано или поздно мы дойдем и до этого». Вот и я спустя много лет спокойной жизни с Symfony в рабочих и ReactPHP в пет-проектах вписался в создание своего фреймворка.

Но его история только начинается. А как было у тех, чье детище доросло до продакшн-уровня, но так и осталось нишевым решением? Я нашел человека, который знает ответ на этот вопрос — автора и ведущего разработчика аспектно-ориентированного фреймворка.
Читать дальше →

Перенос почты между серверами через интерфейс пользователя посредством IMAPSync

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

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

Процесс миграции передаем пользователю по причине запрета организацией использовать пароли от почтовых ящиков сотрудников в скрипте. Для этого разработан web-интерфейс пользователя.

Читать далее

Нам и тут хорошо. Как мы наносим Йошкар-Олу на IT-карту России

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

Всем привет! В этой статье хочу поделиться своим опытом развития IT-движухи в Йошкар-Оле и дать советы, которые помогут вам начать развивать сообщество разработчиков в вашем городе.

Читать далее

«Только не „Битрикс“!». Почему не стоит игнорировать изучение этого фреймворка

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

Часто от программистов PHP можно услышать: «О нет! Только не „Битрикс“!». Многие специалисты не хотят связываться фреймворком, считают его некрасивым и неудобным. Однако вакансий битрикс-разработчиков с каждым годом становится все больше. Уже сейчас программисты, которые работают с «Битриксом», — одни из самых востребованных среди специалистов PHP.

Когда-то я был разработчиком 1С, а увлечение PHP помогло мне вырасти до руководителя подразделения веб-разработки в Neti. Я постараюсь объяснить, почему программистам полезно изучить фреймворк Bitrix.
Читать дальше →

Lorem Ipsum: пишем от руки

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

Предисловие



Занимаюсь развитием образовательного проекта. И в этом году для ребят потребовались прописи на английском языке.

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

Прописи — вещь полезная как и для детей, так и для взрослых. Одни еще учатся писать, другие — тренируются.

Нам было важно создать систему быстрого и удобного подбора прописей. Поэтому решили сделать свой генератор.

Тема интересная, но информации в интернете оказалось очень мало. Так возникла идея написать инструкцию создания своих прописей.
Читать дальше →

20_20 — год, в котором подчеркивание в числовых литералах победило

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

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


<?php

print(1_00);
print(100);

Выведет 100100 (проверить онлайн). Этот синтаксический сахар появился в Ada в 1980 году, и он имел переменный успех последние 40 лет. Но за последний год его добавили в javascript, PHP, Go, Scala и даже консервативный Erlang. Я не могу объяснить, что послужило всплеском популярности, поэтому в статье просто опишу историю разделителей в цифрах.

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

Настройка Gmail API для замены расширения PHP IMAP и работы по протоколу OAuth2

Время на прочтение13 мин
Количество просмотров13K
Оказавшись одним из счастливчиков, совершенно не готовым к тому, что с 15 февраля 2021 года авторизация в Gmail и других продуктах будет работать только через OAuth, я прочитал статью "Google хоронит расширение PHP IMAP" и загрустил начал предпринимать действия по замене расширения PHP IMAP в своём проекте на API Google. Вопросов было больше, чем ответов, поэтому заодно нацарапал мануал.
Читать дальше →

Xdebug через Windows Subsystem For Linux 2 (WSL2)

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

Под катом небольшая заметка про то как можно настроить удобное окружение для работы с PHP, xdebug через Windows Subsystem For Linux 2 (WSL 2).


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

Laravel–Дайджест (17–23 августа 2020)

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

Перенос legacy-проекта на Laravel. Ускорение приложения на 80% с помощью Swoole. Оптимизация кода с помощью Debugbar. Логирование всех запросов к базе данных.


Laravel Дайджест

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

Пишем простую ORM с возможностью смены БД на лету

Время на прочтение9 мин
Количество просмотров9.1K
image

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

Я несколько лет пользуюсь серверным telegram клиентом на php. И как многие пользователи — устал от постоянного роста потребления памяти. Некоторые сессии могут занимать от 1 до 8 гигабайт RAM! Поддержка баз данных была уже давно обещана, но подвижек в этом направлении не было. Пришлось решать проблему самому :) Популярность open source проекта, накладывала интересные требования на pull request:

  1. Обратная совместимость. Все существующие сессии должны продолжить работать в новой версии (сессия — это сериализованный инстанс приложения в файле);
  2. Свобода выбора БД. Возможность менять тип хранилища без потери данных и в любой момент, так как у пользователей разные конфигурации окружения;
  3. Расширяемость. Простота добавления новых типов баз данных;
  4. Сохранить интерфейс. Код приложения, работающий с данными, не должен меняться;
  5. Асинхронность. Проект использует amphp, поэтому все операции с базами должны быть неблокирующими;

За подробностями приглашаю всех под кат.
Читать дальше →

Тестирование это просто. Или история одного велосипеда

Время на прочтение2 мин
Количество просмотров3.7K
Однажды мне нужно было протестировать ответ сервера и я решил что использовать для этого тяжеловесные швейцарские ножи вроде PhpUnit — обременительно. Осложнялось все тем — что инфраструктура была разбита на множество веб-микросервисов, которые в свою очередь работали на разных бэкендах(PHP, NodeJS, Python, GO). Посему я решил набросать простой класс, который на удивление оказался очень удобным инструментом для приемочного тестирования системы.
— Нам нужно быть уверенными что при каждом пуше у нас не сломается вся инфраструктура, сможешь сделать? -Легко!
Читать дальше →

Модернизация старого PHP-приложения

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

Недавно мне выдалась случайная возможность поработать с несколькими старыми PHP-приложениями. Я заметил несколько распространённых антипаттернов, которые пришлось исправлять. Эта статья не о том, как переписывать старое PHP-приложение на <вставьте сюда название чудесного фреймворка>, а о том, как сделать его более удобным в сопровождении и менее хлопотным в работе.
Читать дальше →

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

Мёртвый код: найти и обезвредить

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


Меня зовут Данил Мухаметзянов, я работаю бэкенд-разработчиком в Badoo уже семь лет. За это время я успел создать и изменить большое количество кода. Настолько большое, что в один прекрасный день ко мне подошёл руководитель и сказал: «Квота закончилась. Чтобы что-то добавить, нужно что-то удалить».

Ладно, это всего лишь шутка — он такого не говорил. А жаль! В Badoo за всё время существования компании накопилось больше 5,5 млн строк логического бизнес-кода без учёта пустых строк и закрывающих скобок.

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

Эту тенденцию заметил не только я. В Badoo поняли: наши высокооплачиваемые инженеры постоянно тратят время на мёртвый код.

Сокращаем ссылки без жира (F3)

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

Короткие ссылки — это прикольно. Напишем сократитель с использованием Fat-Free Framework.
Итак, пятый бутстрап, обезжиренный фреймворк и частичка души.

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

Пишем плагин GLPI для переоткрытия заявок

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

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

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

Из официальных мануалов — пара ресурсов на readthedocs, плюс мануал, сгенерированный из phpdoc'а.

Из сообщества — чат в телеграме и забугорный форум.
Читать дальше →

Synology SSO Server – управление авторизацией и доступ к сервисам с сайта

Время на прочтение3 мин
Количество просмотров7.6K
Некоторое время назад передо мной встала задача, в целях защиты коммерческой тайны своих клиентов, отказаться от использования сторонних облачных сервисов.

Первое и самое логичное – предоставить им доступ на уже имеющийся в наличии Synology.

И тут возникло желание сделать это красиво, не отдельным логином/паролем, а с использованием уже выданных ранее от личного кабинета. «Бесшовный» переход из личного кабинета на сервисы Synology – то, что нужно.

Описание и скрипт под катом.
Читать дальше →

PHP-Дайджест № 186 (3 – 17 августа 2020)

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

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8 Beta 1, снова о синтаксисе атрибутов в PHP 8: #[Attr] vs @[Attr], предложение по синтаксису для BigInt, обзоры PHP 8 и много других видео, инструменты, стримы, подкасты.

Приятного чтения!


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

Laravel-Дайджест (10–16 августа 2020)

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

Подборка новых статей по фреймворку Laravel. Некоторые подробности о Laravel 8. Как правильно писать масштабируемые приложения. Интеграция Paypal и Pusher.


Laravel Дайджест

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

Как я html-парсер на php писал, и что из этого вышло. Заключительная часть

Время на прочтение24 мин
Количество просмотров7.5K
Здравствуйте.

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

Напишем свой поиск элементов, подробнее поговорим о поиске по классам и идентификаторам. И многое другое!