Обновить
50.52

PHP *

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

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

Пишем расширения для PHP 7 на C++

Время на прочтение14 мин
Количество просмотров23K
Мне приходилось писать расширения для того, чтобы воспользоваться функциями C++ библиотек в коде PHP. Ещё, одно тяжёлое расширение портировал с 5й версии на 7ю.

Если загуглить документацию на тему написания расширений для PHP, то, в основном, это будут тексты до 2014 года, актуальные для версии 5. Сам сайт php.net предоставляет обрывчатые и устаревшие сведения, а то, что удаётся найти в их wiki, опять про 5ю версию. Максимум, что удалось найти на офф сайте, это скудный ман по миграции уже написанных расширений.

В итоге, единственным более или менее понятным маном по написанию расширений для меня оказался исходный код PHP, которым я и руководствовался при написании и миграции расширений.
Читать дальше →

Джентльменский набор Doctrine 2 для Symfony 3.3.6: Создание сущности, ассоциации и рекурсивные связи

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


Доброго дня, читатель!

Что мы будем делать с вами по ходу чтения статьи


  • Создадим простые сущности
  • Немного поговорим об ORM аннотациях
  • Реализуем ассоциации:
    1. Двунаправленные связи Один к Одному
    2. Двунаправленные связи Один ко Многим
    3. Двунаправленные связи Многие ко Многим
    4. Рекурсивные связи

  • Поиграемся этими сущностями с помощью фикстур

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

Распознать и обезвредить. Поиск неортодоксальных бэкдоров

Время на прочтение5 мин
Количество просмотров17K
Согласно нашим подсчетам, в 72% зараженных сайтов использованы программы скрытого удаленного администрирования — бэкдоры. С их помощью мошенники получают удаленный доступ к вашему сайту, и понятное дело, чем это грозит владельцу: получение и передачи конфиденциальных данных пользователей, запуск вредоносных программ, уничтожения информации и тд.


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

Оптимизация шаблонов представления в Codeigniter Framework при помощи AST трансформаций

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

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

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

Laracon 2017 — краткий обзор и куча полезных ссылок

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

laracon-2017


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

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

Laravel — экосистема, а не просто PHP-фреймворк

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


Данная статья предназначена для начинающих веб-разработчиков, а также тех, кто хочет понять, для чего стоит изучить PHP-фреймворк Laravel и какую экосистему он нам предлагает. Статья написана на момент актуальности Laravel версии 5.4, в августе 2017 выйдет релиз Laravel 5.5, который предоставляет ещё больше возможностей.

Содержание:

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

Microservices и Модель Акторов (Actor Model)

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

Доклад посвящен:

  • Пользовательским интерфейсам ориентированным на задачи (Task Based UI)
  • CQRS (Command/Query Responsibility Segregation)
  • Микросервисы
  • Закон Конвея и его влияние на примере организации команд в Magento
  • Fine-grained сервисы vs Coarse-grained сервисы
  • Синхронность vs Асинхронность
  • Модель Акторов (Actor Model)

Вторая часть доклада находится под хабракатом.

Magento Dare to Share — Открытая Площадка для докладов о Magento, PHP и eCommerce

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


20 Июля в Киевском офисе Magento прошло открытое мероприятие под названием Magento meetup «Dare to Share», которое могли посетить и в котором могли принять участие любые желающие кому интересна платформа Magento 2 и тема электронной коммерции (eCommerce).

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

  1. Игорь Миняйло, Magento (@iminyaylo on ) — Magento Community Engineering
  2. Макс Пронько, The Irish Store (@max_pronko on ) — Автоматизация релизов для Magento 2. Опыт компании The Irish Store
  3. Вячеслав Кравчук, Atwix (@slkra on ) — Story of a Transformation (Укр.)
  4. Андрей Кравец, Forbytes / Gymgrossisten (@Winfle on ) — Dynamic caching of personalised data in Real Life (Укр.)
  5. Александр Козырь, Magecom (@kozyr1av on ) — SOLID-ное программирование на Magento 2

Тезисы докладов можно прочитать под Катом
Читать дальше →

PHP-Дайджест № 113 – свежие новости, материалы и инструменты (16 – 30 июля 2017)

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


Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.2.0 Beta 1, свежие RFC из PHP Internals, материалы по асинхронному PHP, видео с конференций и митапов, и многое другое.
Приятного чтения!

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

Форма авторизации с отправкой зашифрованного пароля

Время на прочтение3 мин
Количество просмотров15K
В этой статье я решил выложить свое представление о авторизации на сайте при помощи PHP.
Конечно если авторизация происходит на SSL риски того, что пароль будет перехвачен при помощи снифера становятся ничтожными. Но все же, такой вид авторизации не везде используется. Один из видов защиты — это содержание пароля в виде хеша. Но ведь при авторизации пароль оправляется в POST запросе на сервер и существует шанс его выловить. Поразмыслив, я решил попробовать реализовать схему авторизации при которой пароль не будет отправляться на сервер в том виде в котором он есть. И даже не его MD5 хеш. В планах было что то подобное алгоритму ms-chap.
Читать дальше →

Doctrine Specification Pattern или ваш реюзабельный QueryBuilder

Время на прочтение5 мин
Количество просмотров18K
Я постараюсь максимально коротко рассказать о том, как можно использовать этот паттерн с нашей любимой Doctrine на примерах и почему так делать — true.

Давайте представим себе базовый кейс:

  1. У нас есть: сущность «Дом», сущность «Квартира в доме», сущность «Застройщик», сущность «Регион».
  2. У нас есть задача: иметь возможность получить всех застройщиков, иметь возможность получить все занятые регионы застройщиком, уметь возможность получить все дома, которые принадлежат застройщику и все доступные регионы вообще в принципе, где ведутся продажи домов.
  3. У нас есть правила от бизнеса:
Читать дальше →

Синглтоны и общие экземпляры

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


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


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

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

Orchid CMS — ещё одна CMS на Laravel

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


Да да да, вы всё правильно прочитали, ещё одна система управления содержимым, можете сразу доставать кирпич и идти в комментарии поджигая свой факел.
Читать дальше →

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

Superjob PHP-meetup. Прямая трансляция

Время на прочтение3 мин
Количество просмотров5.9K
Сегодня в 18:30 по московскому времени в офисе Superjob состоится встреча PHP-разработчиков. Присоединяйтесь к прямой трансляции!



Система управления складом с использованием CQRS и Event Sourcing. Проектирование

Время на прочтение6 мин
Количество просмотров10K
image
Итак, после постановки требований описанной в части 1 можно перейти к проектированию системы.

Основная наша задача в проектировании, как это понятно из названия статьи, добиться разделения интерфейсов на Query и Command, чтобы впоследствии разделить бизнес сценарии на те, которые будут читать данные (Query интерфейсы) и на те, которые будут изменять данные (Command интерфейсы). А также обеспечить минимальное время ожидание (latency) на обновление данных, доступных через Query, после того как мы изменили данные через Command.
Читать дальше →

Применение принципа poka-yoke в программировании на примере PHP

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


Всем привет! Я Алексей Грезов, разработчик Server Team Badoo. Мы в Badoo всегда стараемся сделать так, чтобы наш код было легко поддерживать, развивать и переиспользовать, ведь от этих параметров зависит, насколько быстро и качественно мы сможем реализовать какую-либо фичу. Одним из способов достижения этой цели является написание такого кода, который просто не позволит совершить ошибку. Максимально строгий интерфейс не даст ошибиться с порядком его вызова. Минимальное количество внутренних состояний гарантирует ожидаемость результатов. На днях я увидел статью, в которой как раз описывается, как применение этих методов упрощает жизнь разработчикам. Итак, предлагаю вашему вниманию перевод статьи про принцип "poka-yoke".

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

Опыт Туту.ру: как устроено расписание электричек

Время на прочтение11 мин
Количество просмотров117K
Поезда пригородного сообщения — электрички — остаются одним из самых массовых видов пассажирского транспорта в России. За год ими пользуются миллионы пассажиров, которые проезжают суммарно сотни миллиардов километров на тысячах электричек. Только в январе 2017 года, по данным столичного департамента транспорта, опубликованным в едином хранилище данных правительства Москвы (ЕХД), пассажиропоток пригородного железнодорожного транспорта составил 42,6 млн человек. Это выше на 4,1% по сравнению с показателями прошлого года.

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

Меня зовут Александр Подлевских, я ведущий инженер-разработчик компании Туту.ру, тимлид в команде электричек, и в статье расскажу про технические детали и сложности построения онлайн расписания, как все это работает, каким образом мы используем данные, предоставляемые РЖД, и как наши пользователи помогают нам поддерживать расписание в актуальном состоянии, не догадываясь об этом.


График движения поездов — это отображение процесса движения поезда в декартовой системе координат. В таком виде представляется график движения поездов на железной дороге.
Читать дальше →

Настройка среды разработки: кружок рукоделия (Часть 1)

Время на прочтение9 мин
Количество просмотров9.2K
Настройка среды разработки
Привет, дорогой читатель!
Сегодня я хочу поделиться своим опытом настройки персонального окружения для работы с различными PHP-based проектами. В данной статье описывается опыт ручной настройки окружения.

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

Автоматизацию процесса развертывания среды я напишу в одной из следующих статей.

Статья будет очень длинной с уклоном в техническую сторону. Прошу под «кат».
Читать дальше →

Автоматическое сжатие хранимых данных в redis

Время на прочтение5 мин
Количество просмотров7.2K
Проблема — в часы пик не справляется сетевой интерфейс с передаваемым объёмом данных.
Из доступных вариантов решения был выбран сжатие хранимых данных
tl;dr: экономия памяти >50% и сети >50%. Речь пойдёт о плагине для predis, который автоматически сжимает данные перед отправкой в redis.
Читать дальше →

PHP-Дайджест № 112 – свежие новости, материалы и инструменты (26 июня – 16 июля 2017)

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


Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.2.0 Alpha 3, много новых инструментов, Machine Learning на PHP, туториалы по асинхронному PHP, и многое другое.
Приятного чтения!


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