php

PHP, и все все все
От А до Я про Event Dispatching
php

От А до Я про Event Dispatching

Впервые я столкнулся с событиями, когда работал с Symfony. Смотря обучающие уроки, я заметил, что большинство задач решаются с помощью создания (диспатчинга) и обработки определённых событий (слушателями). В то время мне показалось это сложной концепцией для понимания. Но, работая с разными проектами и фреймворками, эти вещи продолжали появляться, потому мне
9 min read
Реальные примеры использования генераторов в PHP
php

Реальные примеры использования генераторов в PHP

Несмотря на то, что генераторы доступны с версии PHP 5.5, они до сих пор используются крайне редко. На самом деле, большинство разработчиков, которых я знаю, понимают, как работают генераторы, но не видят, когда они могут быть полезны в реальных ситуациях. "Да, генераторы, безусловно, выглядят здорово, но знаете... за исключением
6 min read
Генерируем пиксельные изображения с помощью PHP (генератор аватарок и пиксельных городов)
php

Генерируем пиксельные изображения с помощью PHP (генератор аватарок и пиксельных городов)

Последние несколько недель я экспериментировал с генеративным искусством, используя PHP. Генеративное искусство - это создание произведений искусства с помощью программирования. У генеративного искусства есть разные названия, такие как процедурное искусство или креативное кодирование. PHP не является распространенным языком для генеративного искусства, JavaScript - один из более распространенных вариантов, но на
7 min read
Принципы S.O.L.I.D в картинках
php

Принципы S.O.L.I.D в картинках

Если вы знакомы с Объектно-ориентированным программированием, то вы, вероятно, слышали о принципах SOLID. Я ранее писал об этом статью, где рассматривал эти принципы с примерами кода. Эта статья, мне кажется, получилась отличным дополнением. Здесь, я, в простой, понятной манере, на картинках покажу, что есть SOLID и с чем его солят.
4 min read
Полиморфные связи в Laravel и примеры их использования
php

Полиморфные связи в Laravel и примеры их использования

Довольно часто при разработке программного обеспечения используются модели, которые могут относиться к нескольким сущностям одновременно. Подобный тип модели обладает универсальной структурой, которая не изменяется под какую-то конкретную модель, с которой она связывается. Распространенным примером такого примера является комментарий. В блоге, например, комментарии можно добавить конкретному посту или страницу. Однако структура
4 min read
Функция Rand() в Doctrine. Как получить случайные записи в Доктрине.
doctrine

Функция Rand() в Doctrine. Как получить случайные записи в Доктрине.

В этой статье я расскажу об одной, очень не популярной, однако, неожиданно возникающей проблеме. Сегодня я расскажу, как в Доктрине выбирать случайные записи (на диалекте SQL - записи ORDER BY Rand()). Любой PHP Symfony разработчик знает о проблеме получения случайных строк/записей с помощью Doctrine. Это связано с тем, что
2 min read
Как работать с DigitalOcean Spaces в PHP
php

Как работать с DigitalOcean Spaces в PHP

В предыдущей статье я тестировал хранилище DigitalOcean, где описал тонкости работы, достоинства и недостатки их сервисов. В этой статье я решил пойти дальше и описать пример работы по API с хранилищем, используя язык программирования PHP. Если вы ещё не пользовались услугами Digital Ocean, то советую попробовать (уверен, вы не пожалеете)
4 min read
Приватный конструктор класса в PHP
php

Приватный конструктор класса в PHP

Определение приватного конструктора - это паттерн, используемый в объектно-ориентированных языках программирования, который предотвращает создание экземпляра класса, вызовом из вне конструкции new ClassName(). Эта паттерн, который наделяет класс возсожностью создать объект только изнутри самого себя (ниже покажу детальнее, что это значит). Впервые увидев этот паттерн на практике, я был немного растерян.
4 min read
Оператор раскладывания (Spread) для массивов в PHP 7.4
php

Оператор раскладывания (Spread) для массивов в PHP 7.4

Сообществом было проголосовано в поддержку добавления оператора раскладывания в выражениях при работе с массивами. В результате чего, эта возможность была добавлена в PHP 7.4. Оператор раскладывания появился в PHP ещё в версии 5.6. А текущее обновление только расширяет его функциональные возможности. Оно расширяет работу при использовании массивов; а
1 min read
Стрелочные функции в PHP
php

Стрелочные функции в PHP

Краткие анонимные функции, они же, стрелочные функции - один простой способ быстрого и простого синтаксиса описания функции в PHP. Запись в таком формате удобна и полезна, когда мы описываем функцию для функций array_map, array_filter, или им подобным. Вот, как выглядит эта запись: // массив пользователей $users = [https://badtry.net/
3 min read
Пишем бота регистрации аккаунта на PHP, эмулируя AJAX-запросы на CURL
парсеры

Пишем бота регистрации аккаунта на PHP, эмулируя AJAX-запросы на CURL

Пока вышла горячая статейка с основными приёмами при работе с cURL в PHP, я решил написать скрипт простого бота, работающего с AJAX, чтобы закрепить материал на реальном примере. В этой статье будут упускаться многие очевидные вещи, эта статья будет более ориентирована на демонстрацию подхода при написании ботов для любого сайта.
5 min read
Базовая работа с PHP CURL: GET, POST, JSON, Headers
curl

Базовая работа с PHP CURL: GET, POST, JSON, Headers

Curl - это программное обеспечение, которое позволяет выполнять запросы разных типов или протоколов. И как раз cURL помогает нам писать боты и парcеры на PHP, автоматизируя шаблонные HTTP-запросы, и собирая большое количество данных автоматизировано. PHP имеет встроенные инструменты по удобной работе с cURL. И в этой статье я покажу несколько
3 min read
Почему при разработке на Symfony я предпочитаю использовать Vagrant?
php

Почему при разработке на Symfony я предпочитаю использовать Vagrant?

Если при разработке приложений на Symfony под ОС Windows использовать Docker, то со 100-процентной вероятностью вы заметите, что рендеринг страниц происходит чрезвычайно медленно. При каких-либо изменениях в коде проекта, происходит перестроение кеша, и общее время рендеринга страницы может быть равно 3-4 секундам, иногда 10, иногда больше (иногда настолько долго, что
5 min read
ElasticSearch: что такое, как работать и где применять
ElasticSearch от нуля к единице

ElasticSearch: что такое, как работать и где применять

Качественный поиск на вашем сайте - это не самая тривиальная вещь, которую можно придумать. Если ранее вы имели задачу по реализации поиска по базе данных, то должны понимать, что действительно, качественный поисковый алгоритм не так просто разработать. Ввиду того, что эта задача стоит перед разработчиками очень часто, а так же,
7 min read
Docker самый простой и понятный туториал. Изучаем докер, так, если бы он был игровой приставкой
docker

Docker самый простой и понятный туториал. Изучаем докер, так, если бы он был игровой приставкой

Добро пожаловать в гайд по изучению Docker, в котором я проиллюстрирую вам совершенно иной подход при разработке ваших приложений с его помощью. Эту статью вы можете считать как быстрый старт, введение в Docker. Когда вы полностью прочитаете эту статью, уверен, вы поймёте, что такое Docker, для чего нужен, и где
26 min read
5 принципов SOLID - объяснение на пальцах
php

5 принципов SOLID - объяснение на пальцах

Принципы SOLID состоят из 5 ключевых идей по написанию и проектированию объектно-ориентированных приложений. Принцип SOLID, сама его идея появилась в 2000 году Робертом Мартином (однако, само официальное название этому принципу были утверждено только спустя несколько лет). Принципы, именуемые, как SOLID были настолько хороши, что спустя лишь небольшое время они захватили
7 min read
Понимание и применение Интерфейсов и Абстрактных классов
php

Понимание и применение Интерфейсов и Абстрактных классов

Эта статья появилась на основе многочисленных вопросов о том, что такое интерфейсы и абстрактные классы в PHP, и какое между ними отличие. В этой статье, я, на основе простых примеров постарался описать идеи использования интерфейсов и абстрактных классов в PHP. А так же, описал, в каких случаях следует использовать абстрактный
4 min read
Пишем быстрый PHP парсер (scraper)
php

Пишем быстрый PHP парсер (scraper)

Так сильно увлекаясь парсингом сайтов, я удивляюсь самому себе, насколько мало информации я публикую на эту тему. Сегодня я решил немного поправить эту несправедливость. В этой статье я хочу показать, как сделать быстрый парсер на PHP, в частности парсер фильмов с кинопоиска средствами PHP. Примите к сведению, что при парсинге
10 min read
Чтение CSV-файла в PHP
php

Чтение CSV-файла в PHP

В этой статье я покажу простой пример того, как прочитать данные их CSV-файла, и записать их в массив для дальнейшей работы с данными. Мы напишем простой код по парсингу CSV на PHP, которую можно будет использовать конвертации CSV-данных в массив, или JSON. Прежде всего, разберёмся, что за формата такой этот
3 min read
Сокращение ссылок с adf.ly API с помощью PHP
php

Сокращение ссылок с adf.ly API с помощью PHP

В этой статье я покажу вам, как сокращать ссылки в PHP, используя API adf.ly. Adf.ly - один из самых популярных сервисов для сокращения ссылок, с оплатой за переходы по вашим ссылкам. Этот сервис, помимо того, что сокращает ссылки, делая их более читаемымы, так же, позволяет заработать немного денег
4 min read
Как сделать скриншот сайта по URL на PHP
php

Как сделать скриншот сайта по URL на PHP

В этой статье я покажу вам, как можно средствами PHP создать скриншот любой веб-страницы. Для решения этой задачи существует множество различных сервисов, предоставляющих API для создания скриншотов. В этой статье я буду использовать Google API, позволяющее запросто сделать скриншот по указанному URL-адресу. Преимуществом использования Google API в том, что для
3 min read
Как конвертировать XML в ассоциативный массив
php

Как конвертировать XML в ассоциативный массив

Работая над своим последним проектом, у меня появилась острая необходимость в парсинге xml-файла, и конвертации его в ассоциативный массив. Прежде всего хотелось сделать это всё без использования сторонних библиотек, исключительно нативными средствами PHP. И в этой статье я покажу, что у меня получилось, и как конвертировать xml в ассоциативный массив.
3 min read
Первый парсер. Что такое curl_setopt?
php

Первый парсер. Что такое curl_setopt?

Сразу, в лоб, начну с кода: $url = 'http://spaces.ru'; $ci = curl_init($url); curl_setopt($ci, CURLOPT_RETUNRTRANSFER, 1); $reponse = curl_exec($ci); Здесь показано, как делать запрос с помощью CURL. Впервые увидив такой синтаксис, у меня, ничего, кроме страха, и недоумения не возникало. Что за curl_setopt? Что
1 min read
Парсинг на php. Основы
парсеры

Парсинг на php. Основы

Что такое парсер? Парсер - это скрипт, который автоматически, по шаблону, собирает информацию с выбранного ресурса, и сохраняет, в удобном для нас виде. Например, нам нужно скачать 1000 статей с сайта кулинарных рецептов. И задача парсера заключается в том, чтобы автоматически собрать ссылки на все эти 1000 статей, перейти по
2 min read
Ошибка XDEBUG при выполнении CURL_EXEC
php

Ошибка XDEBUG при выполнении CURL_EXEC

Совсем недавно я писал парсер, который пытался отладить в PHPStorm xdebug-ом. И каково было моё удивление, когда я увидел, что при выполнении функции curk_exec сессия дебага просто сбрасывалась. Но, ещё большее удивление вызвала простота решения этой проблемы. Для того, чтобы решить эту проблему, нужно сначала понять, что на самом
1 min read