PHP Profi

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

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

2015-07-24 ddelay

НовостиHHVM 3.8.0

Мы рады сообщить, что HHVM 3.8.0, наконец, доступен. Как всегда, вы можете, попробовать один из готовых пакетов для Ubuntu и Debian или собрать из исходника. (На момент написания статьи, пакеты до сих пор были в разработке, поэтому, если пакет 3.8.0 недоступен для вашего дистрибутива, дождитесь!)

2015-07-16 Systra

ТестированиеPHPUnit для начинающих. Часть 1: Начните использование.

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

Типы тестов

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

Давайте разделим тесты на категории по уровню их специфичности. По данным Википедии. В целом существует 4 признанных уровня тестов:

  • Unit-тестирование (модульное): этот уровень тестирует наименьшую единицу функциональности.
2015-05-29 alek13

ComposerSatis: Создайте свой собственный репозиторий Composer

Все мы любим Composer. Он существенно изменил способ построения PHP приложений, основанных на небольших и повторно используемых компонентах, но это создает новые проблемы, особенно, когда у нас есть единая точка отказа. С помощью Satis, мы можем сделать процесс выкладки более устойчивым, добавив резервирование для всех потенциальных точек отказа (Packagist и GitHub). Давайте посмотрим, как это работает.

2015-05-27 Systra

Базы данныхПродвинутое разделение чтения и записи с помощью MySQLnd в PHP. Часть 2.

Продолжение статьи

Шардинг и секционирование

Запросы на запись очень трудно распределить на множество машин (например, мульти-мастер репликация) традиционными средствами MySQL (т.е. не используя MySQL Cluster). Поэтому зачастую используется секционирование или шардинг. Это позволит вам равномерно распределить запросы среди множества ведущих серверов, записывая разные данные на каждый из них.

2015-05-23 alek13

Базы данныхПродвинутое разделение чтения и записи с помощью MySQLnd в PHP. Часть 1.

От переводчика: нам показалось, что эту статью долго не только переводить, но и читать. Поэтому мы решили разбить её на две части.

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

Множественные конфигурации

Те, кто внимательно читал первую часть могли заметить, что в файле конфигурации mysqlnd_ms имеется ключ первого уровня (в дальнейшем примере "appname"), который содержит все наши настройки. Это позволяет задать несколько вариантов конфигураций в одном файле.

2015-05-23 alek13

ComposerМонолитные репозитории для PHP и Composer

Монолитные репозитории предоставляют множество преимуществ. Я создал прототип Fiddler - дополнение для Composer, добавляющее управление зависимостями для монолитных репозиториев в PHP.

2015-05-05 irul

Тонкости языкаSPL итераторы вопреки производительности

 

Итераторы SPL вопреки производительности

2015-04-27 irul

Базы данныхПростое разделение чтения и записи с помощью MySQLnd в PHP

MySQL всегда был основной базой данных для работы с PHP, так сложилось исторически, практически с самого начала. Конечно, некоторые используют PostgreSQL, SQL Server, или Oracle, но для интернет-проектов MySQL обычно является предпочтительной реляционной БД.

Это было связано, в основном, с легкостью внедрения и применения MySQL. Libmysqlclient шел в комплекте с PHP до тех пор, пока эта библиотека не была повторно лицензирована под GPL. После чего она была удалена из-за невозможности распространения вместе с PHP.

Это сделало процесс сборки для PHP немного более сложным, потому что теперь Libmysqlclient должна была быть доступна на хостинге.

2015-04-21 solD1Er

ComposerComposer: Всё о .lock файле

Composer является стандартом де-факто для управления зависимостями в PHP. Он прост, эффективен и уже стал вездесущ.

Каждый знает, что при использовании Composer вы просто создаёте файл composer.json со списком зависимостей и их версий, а после запускаете composer install и всё готово.

Потом вы коммитите composer.json в ваш проект и каждый разработчик вашей команды может легко установить все небходимые зависимости запустив composer install.

Конечно мы знаем и про composer update, которая обновит установленные пакеты до последний версии (опираясь на указанные версии в composer.json).

Это действительно просто. Но как насчёт файла composer.lock, который генерируется в корне проекта? Зачем ? И что нам с ним делать ?

2015-04-03 alek13

НовостиВышел релиз xdebug 2.3

  22 февраля вышел релиз такого полезного инструмента разработки, как xDebug. Что же нового и интересного в этом релизе?

2015-03-23 irul

RFCНаконец одобрено явное определение скалярных типов для PHP 7

Мы спорили, спорили. И, наконец...утвердили!

Php-сообщество с попкорном и колой давно уже наблюдало за баталиями в RFC по поводу возможности явного определения скалярных типов (int, string, float, bool) для аргументов, а также значений функций в грядущем PHP 7.

2015-03-18 irul

RFCRFC Exception для fatal-ов принят

"PHP RFC: Exceptions in the engine (for PHP 7)" за авторством Никиты Попова был принят. Голосование началось и закончилось в оригинальные числа - 23 февраля и 8 марта smiley.

Суть RFC

Если в двух словах, то в RFC предлагается использовать исключения (Exception) на уровне движка, что позволит вместо fatal и recoverable fatal ошибок выбрасывать исключения.

2015-03-11 alek13

Тонкости языкаРеализация поиска созвучных слов на PHP — Небольшой пример использования функций metaphone и levenshtein.

В этом уроке я покажу вам, как можно использовать две малоизвестные функции PHP (metaphone($str) и levenshtein($str1, $str2)) для поиска созвучных слов на PHP. Поставив эти функции, вы получите исключительные результаты при сопоставлении фраз - для поиска орфографических ошибок или просто для нахождения фраз, звучащих одинаково.

2015-02-03 irul

ИнструментыMagallanes! упрощая деплой вашего PHP приложения

Magallanes - это инструмент для выкладки (deploy) PHP приложений, написанный на PHP. Также известен как MagePHP. Очень прост в использовании и управлении и при этом очень мощный в плане возможностей, которые вы должны попробовать, не смотря на то, что уже существует много средств таких, как Phing, Capistrano, Chef или Deployer…

2015-01-29 alek13

ИнструментыBowerPHP vs Bower

Если вы сталкивались с Composer или просто обычным apt-get (yum), то вы наверняка знаете или слышали о Bower. Ну или хотя бы можете легко представить что это такое - это менеджер зависимостей для js-библиотек (пакетов).

Относительно недавно в свет вышел BowerPHP. Хотя, конечно, это сложно назвать "вышел", т.к. все версии помечены "alfa". И как вы могли уже догадаться, - это всё тот же Bower, только в профиль написаный на PHP.

2014-12-16 alek13

ПроектированиеО различии между простыми и сложными решениями в ООП

Основы объектно-ориентированного проектирования — О различии между простыми и сложными решениями.

перевод статьи "Foundations of OO Design"

2014-12-03 irul

ИнструментыЧеклист, чтоб ваш продукт был хорошо принят сообществом php

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

Перевод этого чеклиста

2014-11-30 irul

Тонкости языкаИнтерфейсы для трейтов

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

Исследуем один  из таких нюансов и по возможности его усовершенствование на уровне языка. Посмотрим, как мы можем решить одну проблему во время выполнения, но было бы здорово иметь эту возможность в самом PHP.

2014-11-23 irul