Laravel: Like для коллекций

В коллекциях Laravel 5.1 нет функции like для коллекций, но можно написать подобное поведение при помощи filter.

 $searchBy = 'gr';
 $data = collect(array('name' => 'gregg', 'name' => 'john', 'name'=> 'alice'));
        $data = $data->filter(function ($item) use ($searchBy) {
            return (bool) preg_match('#^'.preg_quote($searchBy).'.*$#us', $item['name']);
        });
SQL like preg_match
% .*
_ .

 

PHP Lint

Проверка PHP-кода на ошибки, cli.

find . -type f -name '*.php' -exec php -l '{}' ';'
log=`find . -type f -name '*.php' -exec php -l '{}' ';' | grep -v 'No syntax '`;

if [ x"${log}" != x ]; then
        exit 1;
else
        echo "No syntax errors detected in PHP scripts";
fi

«405 method not allowed» IIS for Restful methods

По-умолчанию в IIS запрещены методы, которые используется в Restful API, например DELETE, PUT и другие.

Для того, что бы разрешить эти методы нужно:

  1. В диспетчере IIS открыть Сопоставления обработчиков
  2. Найти обработчик PHP, зайти в его настройки
  3. Ограничение запроса…
  4. Команды
  5. Прописать необходимые методы, например: GET,POST,PUT,DELETE, а также можно разрешить все.

Включить отдачу .woff .woff2 .svg в IIS

По-умолчанию, в IIS отключен обработчик для файлов шрифтов (например, .woff .woff2) и графики в .svg. Что бы включить нужно сделать следующее:

  1. В Диспетчере служб IIS перейти в «Типы MIME»
  2. Добавить

Значения:

Расширение MIME
.woff application/x-woff
.wof2 application/x-woff2
.svg image/svg+xml

Flat array to nested in php

Requirements = PHP 5.3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function buildTree($flat, $pidKey, $idKey = null)
        {
            $grouped = array();
            foreach ($flat as $sub){
                $grouped[$sub[$pidKey]][] = $sub;
            }
 
            $fnBuilder = function($siblings) use (&$fnBuilder, $grouped, $idKey) {
                foreach ($siblings as $k => $sibling) {
                    $id = $sibling[$idKey];
                    if(isset($grouped[$id])) {
                        $sibling['children'] = $fnBuilder($grouped[$id]);
                    }
                    $siblings[$k] = $sibling;
                }
 
                return $siblings;
            };
 
            $tree = $fnBuilder($grouped[0]);
 
            return $tree;
        }
function buildTree($flat, $pidKey, $idKey = null)
        {
            $grouped = array();
            foreach ($flat as $sub){
                $grouped[$sub[$pidKey]][] = $sub;
            }

            $fnBuilder = function($siblings) use (&$fnBuilder, $grouped, $idKey) {
                foreach ($siblings as $k => $sibling) {
                    $id = $sibling[$idKey];
                    if(isset($grouped[$id])) {
                        $sibling['children'] = $fnBuilder($grouped[$id]);
                    }
                    $siblings[$k] = $sibling;
                }

                return $siblings;
            };

            $tree = $fnBuilder($grouped[0]);

            return $tree;
        }

Usage:

1
2
3
4
5
6
7
8
9
$flat = array(
    array('id'=>100, 'parentID'=>0, 'name'=>'a'),
    array('id'=>101, 'parentID'=>100, 'name'=>'a'),
    array('id'=>102, 'parentID'=>101, 'name'=>'a'),
    array('id'=>103, 'parentID'=>101, 'name'=>'a'),
);
 
$tree = buildTree($flat, 'parentID', 'id');
print_r($tree);
$flat = array(
    array('id'=>100, 'parentID'=>0, 'name'=>'a'),
    array('id'=>101, 'parentID'=>100, 'name'=>'a'),
    array('id'=>102, 'parentID'=>101, 'name'=>'a'),
    array('id'=>103, 'parentID'=>101, 'name'=>'a'),
);

$tree = buildTree($flat, 'parentID', 'id');
print_r($tree);

Thanks! http://stackoverflow.com/a/27360654/1886270