Правильное сравнение PHP фреймворков

22 March 2014

В интернете существует огромное количество различных сравнений фреймворков.

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

Одной из мер качества кода может быть цикломатическая сложность. Я решил сравнить популярные фреймворки с помощью этой меры. А так же посмотреть развитие этих фреймворков в динамике.

На графике отображено изменение отношения цикломатической сложности к количеству методов для всех релизов соответствующих фреймворков. Для подсчёта цикломатической сложности воспользовался замечательной библиотекой Себастьяна Бергмана phploc.

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

PurePHP — NoSQL база данных на чистом PHP

19 March 2014

На PHP создано куча разных штук: веб-сервер, контроллер квадрокоптера и даже GUI. Я решил пополнить список странных штук и создать NoSQL базу данных на чистом PHP.

Готовый результат выложен на GitHub: elfet/purephp

Посмотрим что умеет эта "база данных"...

Создание чата на PHP

16 March 2014

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

Что понадобится?

  • PHP 5.5.x
  • Composer - менеджер зависимостей.
Кстати, если вы работаете на Windows, то вам для разработки на PHP не нужно ничего больше (никаких "денверов"). PHP имеет встроенный сервер, который отлично подходит для разработки.

Интересные и популярные блоги для PHP разработчиков

11 March 2014

Собираю ссылки на интересные блоги по PHP. Со временем этот список будет обновлятся. Если вы знаете ещё какой-нибудь ресурс, напишите о нем в комментариях.

Подсветка кода с Google Code Prettify

22 November 2013

Для потсветки кода на StackOverflow используется библиотека Google Code Prettify. Но у вас она не будет работать точно так же как на StackOverflow. Вы не можете указать комментарий с кодом для уточнения языка: <!-- language: lang --> - работать не будет. Для того что бы библиотека заработала нужно у тега pre указать классы class="prettyprint lang-scm".

Однако это не удобно если вы используете Markdown.

<!-- lang: code -->

    you code goes here

Следующий мой скрипт исправляет это неудобство.

Обновление Deployer

20 November 2013

Новое обновление для deployer включает в себя небольшое изменения в архитектуре для упрощения тестирования. Тесты выполнаются на Travis-CI: Build Status

А так же новую возможность: групповое подключение к нескольким серверам. Если у вас несколько серверов (например тестовый, девелоперский и т.д.) вы можете подключиться ко всем сразу и выполнить деплой на всех.

task('connect', function () {
    connect('test.server.com', 'user', 'password', 'test');
    connect('test_two.server.com', 'user', 'password', 'test');
    connect('dev.server.com', 'user', 'password', 'dev');
    connect('server.com', 'user', 'password', 'prod');
});

task('upload', function () {
    upload('/home/user', '/home/server');
});

task('everythere', 'Deploy everythere', ['connect', 'upload']);

Теперь выполнив php deploy everythere можно загрузить код на все сервера. По умолчанию, функции cd, run, upload выполняются на всех серверах.

Переход от WordPress к Jekyll

19 November 2013

Решил обновить свой блог и перейти от использования WordPress к Jekyll.

Как оказалось сделать это было достаточно просто (если бы не парочка новых багов в jekyll на данный момент). Для переноса постов есть куча импортеров (я воспользовался каким-то написанным на C#).

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

Код моего блога доступен тут.

Для проверки того что блог будет успешно собираться, подключил Travis-CI. Почему-то GitHub в случае ошибки не присылает само сообщение об ошибке и непонятно что именно сломалось.

Так же обновил дизайн блога на более простой и лаконичный. Кстати, фото Сатурна настоящее.

Обновление Silicone Skeleton

08 November 2013
Обновил Silicone Skeleton. Теперь Silicone это независимый набор полезных компонентов. А все настройки находятся в Silicone Skeleton. Это позволит в каждом приложении подключить только то что нужно. Silicone Skeleton предоставляет всю ту же базовую функциональность: регистрация и авторизация пользователей, классы-контроллеры, Doctrine ORM, роуты через анатации, веб консоль с профилированием запросов и т.д.

WebCrypt — сервис онлайн шифрования

27 October 2013
В интернете существует огромное множество инструментов позволяющих вам зашифровать и передать ваше сообщение. Рассмотрим некоторые из них.

webcrypt.org — open source сервис онлайн шифрования прямо в браузере. Код выложен на GitHub под GNU GPL и хостится на GitHub Pages. Для шифрования используется замечательная библиотека Стэнфордского Университета SJCL.

Простейший квайн на php

02 August 2013
« Старые Страница 1 из 3
Система Orphus