PHP Profi

НовостиFont Awesome - если нужны иконки

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

Типичный пример — иконка домика как ссылка ведущая на главную страницу.

Исторически дизайнеры рисовали их векторно и сохраняли в формате .ico какого-то стандартного размера.

Этого было достаточно, когда интернетом пользовались только на стационарных компьютерах с мониторами,

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

2016-10-25 dima

ИнструментыСоздание Rest-API с Symfony 3.1

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

Мы уверены, что Symfony один из самых лучших фреймворков для создания rest API и в этой статье мы рассмотрим создание rest API с Symfony 3.1

Мы пройдемся по следующим пунктам:

  • Что такое Rest API
  • Доступные бандлы для Rest API
  • Регистрация бандлов
  • Конфигурация
  • Создание сущности пользователя
  • GET, POST, PUT, DELETE
2016-10-03 irul

ИнструментыАвторизация из коробки в Laravel 5.2

Если вы похожи на меня, то многие приложения, которые вы пишите с помощью Laravel, имеют схожий каркас: регистрация пользователя, вход, сброс пароля, страница публичных продаж, информационная панель (dashboard) для залогиненного пользователя, маршрут выхода и базовые стили Bootstrap, если вы только начали разработку.

Раньше всё это присутствовало прямо из коробки (примечания переводчика: указанные ниже файлы-шаблоны присутствовали в скелетоне приложения, который разворачивался при установке, — не в самом фреймворке). К моему великому огорчению, это исчезло в последнее время, но теперь эти заготовки доступны через Artisan-команду make:auth (примечания переводчика: и это правильно):

Command line output of artisan make:auth

Какие возможности это нам предоставляет? Давайте копнём глубже.

2016-09-07 alek13

ИнструментыОграничение скорости API в Laravel 5.2

В последнее время всё больше и больше моих работ на Laravel связано с созданием API. У меня есть свой класс для ограничения скорости, который я использовал, но у меня было ощущение, что есть способ сделать это чище. Неудивительно, что, когда Тейлор решил написать middlewere ограничения скорости для Laravel, он сделал это чище и лучше, чем у меня.

2016-08-30 alek13

НовостиВышел релиз Laravel 5.3

Команда разработчиков фреймворка с гордостью анонсировала релиз Laravel 5.3, и теперь он в общем доступе. Новые фичи версии 5.3 направлены на повышение скорости разработки благодаря добавлению в коробку дополнительных улучшений для распространённых задач.

Этот релиз будет получать общие обновления в течение шести месяцев, и обновления безопасности в течение одного года. Laravel 5.1 - последний релиз LTS, с двумя годами исправления багов и тремя годами исправления безопасности.

Вот краткий обзор новых основных моментов Laravel

2016-08-25 irul

ИнструментыНеявная привязка модели при роутинге в Laravel 5.2

Этот функционал нельзя назвать новым, и route model binding уже давно есть в Laravel, но в Laravel 5.2 он стал ещё проще.

2016-08-22 alek13

ИнструментыВалидация массива формы в Laravel 5.2

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

Краткое введение в массивы HTML-формы

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

2016-04-27 alek13

ИнструментыPHPUnit для начинающих. Часть 3: Тестовые «двойники»

Это третья часть серии "PHPUnit для начинающих". В этом руководстве мы объясним когда и как использовать тестовых "двойников" в тестах.

Когда использовать двойников в тестах

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

2016-04-21 alek13

Базы данныхКэширование запросов с помощью PHP и MySQLnd

Несмотря на то что у MySQL есть встроенное кэширование запросов, оно всё равно имеет некоторые проблемы:

Плюсы Минусы
Простота использования: просто включить в конфиге MySQL Упрощённый: он ничего не знает о ваших нуждах
Прозрачно: не требуются изменения в приложении. Легко аннулируется: любые изменения в таблице сбросят все связанные с ней данные, даже если это не нужно
(см. Упрощённый)
  Однопоточный: так как кэш однопоточный, он может в действительности вредить производительности

Мы можем решить эти проблемы, используя кэширование на уровне приложения, но как нам достичь простоты и прозрачности использования, не создавая себе новых проблем?

И вот тут на сцену выходит плагин mysqlnd_qc.

2016-04-18 alek13

Инструменты Запуск из командной строки «исторически сложившихся» (legacy) PHP приложений

Представьте, что у вас есть приложения, которые работают уже какое-то время, но есть несколько распространенных случаев, в которых вы решаете, что нужен CLI интерфейс:

  •  Вы запускаете различные cron задания, которые выполняют HTTP вызовы к некоторому API для запуска различных задач на вашем web-сайте (например, отправка почты и т. д.)
  •  У вас есть некоторые операции, которые вы хотите автоматизировать (с помощью chef или чего-то подобного), а через HTTP- запрос нельзя сделать это красиво
  •  Вы хотите добавить команды "супермега пользователя" (например, сброс пароля), которые могут быть выполнены из командной строки вместо "взлома" базы данных
  •  Добавьте сюда свою причину...

 
Так как же мы можем сделать это? особенно не переизобретая все заново?

2016-02-22 ddelay

RFCRFC: Перегрузка операторов

Буквально сразу после Нового года (02.01.2016) был предложен новый RFC. Это предложение о введении в PHP перегрузки операторов. RFC был предложен Patricio Tarantino и Sara Golemon и предлагается добавить эту возможность в версии 7.1.

Итак, что же такое перегрузка операторов, и как это будет выглядеть в PHP?

2016-01-20 alek13

ИнструментыMiddleware groups in Laravel 5.2

Когда вы пишете крупный проект на Laravel`е, то ваш файл маршрутизации (routes.php) как правило, становится довольно большим. В первую очередь я группирую роуты на логически отдельные секции. Например "admin", "auth", "public".  Обычно каждая из этих групп получает свой собственный набор http-посредников (middleware) — "admin", например, получает auth. Конечно, группа маршрутов для API может использовать другой auth посредник (middleware), а он — использовать специфические для API ограничения или что-то еще.

В Laravel 5.2 появились группы http-посредников (middleware groups), которые являются по сути сокращением (алиасом) для применения большей группы посредников, используя только её ключ.

2016-01-13 alek13

НовостиВышел PHP 7

Команда разработчиков PHP сообщает о выходе PHP 7.0.0. Этот релиз знаменует собой начало новой серии мажорных версий PHP 7.

PHP 7.0.0 поставляется с новой версией Zend Engine, многочисленными улучшениями и новым функционалом, такими как

2015-12-05 alek13

ПакетыУвеличение производительности памяти при помощи Generators и Nikic/Iter

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

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

2015-10-29 irul

Тонкости языкаПочему не стоит злоупотреблять абстракцией

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

2015-10-18 irul

ИнструментыPHPUnit для начинающих. Часть 2: Data Provider.

Это вторая часть серии "PHPUnit для начинающих". В этом руководстве мы объясним когда и как использовать data provider-ов в наших тестах.

 

Когда нужно использовать data provider

Когда мы пишем какую-то функцию, мы хотим быть уверенными, что она правильно отрабатывает на наборе крайних случаев. То же самое относится и к тестам. Это означает, что нам нужно написать множество разных тестов для одной и той же функции, используя разные наборы входных данных. Представим, что мы хотим протестировать класс Calculator с различными данными. Без data provider-а мы должны были бы описать несколько тестов примерно вот так:

2015-10-12 alek13

Базы данныхВведение в интерфейс Мemcached для MySQL InnoDB

В предыдущих статьях серии:

Introduction to MySQL's Innodb Memcached Interface

В MySQL 5.6 появилось memcache-совместимое хранилище ключ-значение на базе движка Innodb.

InnoDB Memcache Daemon предоставляет вам стабильность innodb для данных вида ключ-значение, доступ к которым может быть организован через более быстрый и оптимизированный протокол memcached. При использовании данного протокола будут пропущены: парсинг запроса, его оптимизация и остальные части обработки, которые не требуются.

С помощью mysqlnd_memcache, вы можете прозрачно направлять ваши запросы к такому memcache-совместимому интерфейсу.

2015-10-07 alek13

ИнструментыHHVM vs PHP 7: грядёт конкуренция

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

2015-09-30 irul

Тонкости языкаУскоряем запросы в БД с помощью PDO и итераторов

Когда вы просматриваете километры кода, у вас вполне может возникнуть вопрос: "Почему все сделано так, как сделано?" Лично я особенно замечаю вещи, которые могут и должны быть улучшены, когда дело касается тяжелых запросов в БД. 

2015-08-31 solD1Er

НовостиRemi о libmcrypt и php-mcrypt

Я не могу сосчитать, сколько раз слышал, что использование той или иной библиотеки или расширения PHP - ужасная ошибка. Настало время рассказать об этом.

2015-07-24 ddelay