Философия архитектуры ООП, SOLID-принципы, Dry, KISS и YAGNI

SOLID — за этой аббревиатурой скрываются 5 базовых принципов ООП, предложенные Робертом Мартином. Следование их духу сделает код легко тестируемым, расширяемым, читаемым и поддерживаемым. Вот шпаргалка по этим принципам: Продолжить чтение «Философия архитектуры ООП, SOLID-принципы, Dry, KISS и YAGNI»

IDEA inspections

Для своей работы я использую PhpStorm. Это коммерческая кросс-платформенная интегрированная среда разработки для PHP. Разрабатывается компанией JetBrains на основе платформы IntelliJ IDEA. PhpStorm представляет собой интеллектуальный редактор для PHP, HTML и JavaScript с возможностями анализа кода на лету, предотвращения ошибок в коде и автоматизированными средствами рефакторинга для PHP и JavaScript.

Наиболее важным я считаю инспекцию кода. Автоматический анализ кода на предмет возможных ошибок. Но он не всегда требуется, например, если вы поддерживаете обратную совместимость методов и вам не нужно использование, какого либо параметра в методе. Удалить вы его не можете, поэтому оставляете висеть мертвым грузом, а редактор ругается на это. Для этого мы можем указать следующее:

public static function runRestMethod($executiveUserId, $methodName, $args,
   /** @noinspection PhpUnusedParameterInspection */ $navigation)
{

Ниже вы найдете список для многих языков программирования для отключения тех или иных инспекций.

Продолжить чтение «IDEA inspections»

Построение дерева из списка ID-Parent

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

$listIdParent = array(
  1 => array('parent' => 0),
  2 => array('parent' => 1),
  3 => array('parent' => 1),
  4 => array('parent' => 2),
  5 => array('parent' => 4)
);

Продолжить чтение «Построение дерева из списка ID-Parent»

Bitrix + nGinx (nGinx-boilerplate conf) + php5-fpm

include         nginx-bp/redirects/nowww.conf;

server
{
    listen          80;  #remove this for other configs
    server_name     "site.ru";
    root            /var/www/site.ru/;

    include         nginx-bp/cache.conf;
    include         nginx-bp/limits/methods.conf;

    include         nginx-bp/locations/php.conf;
    include         nginx-bp/locations/favicon.conf;
    include         nginx-bp/locations/favicon_apple.conf;
    include         nginx-bp/locations/static.conf;
    include         nginx-bp/locations/system.conf;

    location /
    {
        include     nginx-bp/logs/bots.conf;
    }


    if (!-e $request_filename) {
       rewrite  ^(.*)$  /bitrix/urlrewrite.php last;
    }

    location ~ \.php$ {
      if (!-f $request_filename) {
         rewrite  ^(.*)/index.php$  $1/ redirect;
      }
    }

}

nGinx+php5-fpm: Избавляемся от ошибки «504 Gateway Time-out»

Установил,настроил, запустил систему. Порадовался, но через некоторое время стали падать сайты. 504 Gateway Time-out.
Решение: Возможно вам необходимо в конфиге /etc/php5/fpm/php-fpm.conf изменить/добавить строку request_terminate_timeout=30s.
Можно использовать любое значение: 31s, 1m,10h и т.д. Я использовал равное директиве max_execution_time = 30

Получаем основной цвет изображения

$i = imagecreatefromjpeg(«image.jpg»);

for ($x=0;$x<imagesx($i);$x++) {
for ($y=0;$y<imagesy($i);$y++) {
$rgb = imagecolorat($i,$x,$y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> & 0xFF;
$b = $rgb & 0xFF;

$rTotal += $r;
$gTotal += $g;
$bTotal += $b;
$total++;
}
}

$rAverage = round($rTotal/$total);
$gAverage = round($gTotal/$total);
$bAverage = round($bTotal/$total);

Определяем местанахождение человека по IP

Полезная функция для определения местоположения по IP. Функция принимает один IP в качестве параметра, и возвращает расположение. Если местоположение не найдено,  возвращается NULL.

Продолжить чтение «Определяем местанахождение человека по IP»

Сокет сервер на php

Цель данного проекта создать простой websoket server на PHP. Проект должен быть:

  • Простым, что бы даже начинающий php программист смог в нем быстро разобраться
  • Кросс браузерный(крос протокольный), что бы работали, Crome, Safari, IE (через Flash)
  • не требующий установки на сервер доп.софта (всякие там lib_event)

Продолжить чтение «Сокет сервер на php»

Malmo — скилет приложений на Yii

Прошу любить и жаловать MALMO. Еще один скилет для ваших приложений. В отличии от bolierate он на много проще но и работать с ним намного приятней.

Что уже есть внутри: Продолжить чтение «Malmo — скилет приложений на Yii»