Для получения полного доступа
зарегистрируйтесь.

Раздел:
Подраздел:
Языки:


dfatt  PHP, C#, JS
  • Репутация: 241
  • Сниппеты: 48
  • Ревизии: 7

К своему стыду обнаружил, что в классе Controller, фреймвока Symfony 3, есть следующие полезные методы. Если вы про это знаете, то листайте дальше, тут ничего нового не будет :)

json

Если нужно отдать Response в JSON, нам достаточно выполнить код:

$data = ['hello' => 'world'];
return $this->json($data);

file

Этот метод понадобиться, когда вам нужно отдать файл для скачивания:

return $this->file('/path/to/file.doc');

Продолжение »

Gravatar image
jumper423  PHP
  • Репутация: 57
  • Сниппеты: 9
  • Ревизии: 2

GitHub

Описание

Пакет создан для стандартизации всех сервисов по разгадыванию капч. У каждого сервиса есть свои особенности и теперь Вам надо будет всего лишь взглянуть на документацию конкретного сервиса чтобы правильно всё сделать. Так же пакет покрывает всю функциональсть сервисов. Если же Вам будет чего-то нехватать или будут предложения, я буду только рад их услышать.

Особенности

  • Подходит для всех сервисов по распознаванию капч
  • Можно легко добавить новый сервис, используя уже готовый движок
  • Быстрая и интуительно понятная настройка
  • Распознавание как по пути до файла, так и по ссылки
  • ReCaptcha v2 без браузера
  • Полная документация
  • Покрыт тестами

Продолжение »

dfatt  PHP, C#, JS
  • Репутация: 241
  • Сниппеты: 48
  • Ревизии: 7

Данная библиотека автоматически приводит код к нужному стандарту — PSR-1, PSR-2. На входе указываем файл или директорию, после этого, код будет отформатирован по указанному стандарту. Также есть возможность настроить форматирование через опции.

Установка

Скачиваем

curl -L https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v2.0.0/php-cs-fixer.phar -o php-cs-fixer

Переносим, для доступа к утилите, из любого места

sudo chmod a+x php-cs-fixer
sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer

Продолжение »

OKyJIucT  php, js, mysql, ajax, nodejs, yii, yii2, vuejs
  • Репутация: 11
  • Сниппеты: 8
  • Ревизии: 0
<?php
function rgb2hex($rgb)
{
    $hex = "#";
    foreach ($rgb as $color) {
    	$hex .= str_pad(dechex($color), 2, "0", STR_PAD_LEFT);
    }
    return $hex;
}

$rgb = [175, 175, 175];
$hex = rgb2hex($rgb); // #afafaf
OKyJIucT  php, js, mysql, ajax, nodejs, yii, yii2, vuejs
  • Репутация: 11
  • Сниппеты: 8
  • Ревизии: 0
<?php

$first_day = date('d.m.Y', strtotime(date("Y-m-01"))); // первый день текущего месяца и года
$first_day = date('d.m.Y', strtotime(date("2014-04-01"))); // день выбранного месяца и года

Сниппет,  PHP

Диапазон дат

OKyJIucT  php, js, mysql, ajax, nodejs, yii, yii2, vuejs
  • Репутация: 11
  • Сниппеты: 8
  • Ревизии: 0
<?php

$from = new \DateTime('2014-01-01');
$to = new \DateTime('2014-12-30');

$period = new \DatePeriod($from, new \DateInterval('P1D'), $to);

$arrayOfDates = array_map(
    function ($item) {
        return $item->format('Y-m-d');
    },
    iterator_to_array($period)
);
dfatt  PHP, C#, JS
  • Репутация: 241
  • Сниппеты: 48
  • Ревизии: 7

Главной фичей CMS является то, что вам не нужна база данных (данные храняться в файлах), за счёт чего и достигается простота в установке. Для установки CMS, вы можете — либо просто распоковать *.zip-архтив, либо установить через Composer:

composer create-project getgrav/grav ~/webroot/grav

В состав CMS, входят следующие библиотеки:

  • Twig Templating
  • Markdown
  • YAML
  • Parsedown
  • Doctrine Cache
  • Pimple Dependency Injection Container
  • Symfony Event Dispatcher
  • Symfony Console
  • Gregwar Image Library
dfatt  PHP, C#, JS
  • Репутация: 241
  • Сниппеты: 48
  • Ревизии: 7

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

  1. Slack
  2. Telegram
  3. Microsoft Bot Framework
  4. Nexmo
  5. HipChat
  6. Facebook Messenger

Кроме того, вы можете определять как будет вести себя команда для определённого мессенджера. Например, так:

// Restrict to Slack and Telegram driver
$botman->hears('keyword', function(BotMan $bot) {
    // do something to respond to message
    $bot->reply('You used a keyword!');
})->driver([SlackDriver::DRIVER_NAME, TelegramDriver::DRIVER_NAME]);
Gravatar image
corpsee  php, yii, postgresql, mysql, rabbitmq
  • Репутация: 10
  • Сниппеты: 3
  • Ревизии: 0

В стандартной библиотеке есть функция str_getcsv для разбора CSV-строки в массив, но нет для нее пары, которая бы собирала массив в CSV-строку. Зато есть парные функции для сбора-разбора в файл - fputcsv / fgetcsv.

<?php
if (!function_exists('str_putcsv')) {
    /**
     * Format line as CSV string
     *
     * @param array  $fields      An array of values.
     * @param string $delimiter   [optional] The optional delimiter parameter sets the field delimiter (one character only).
     * @param string $enclosure   [optional] The optional enclosure parameter sets the field enclosure (one character only).
     * @param string $escape_char The optional escape_char parameter sets the escape character (one character only).
     * 
     * @return int the length of the written string or false on failure.
     */
    function str_putcsv(array $fields, $delimiter = ",", $enclosure = '"', $escape_char = "\\") {
        $fileHandler = fopen('php://temp', 'r+b');
        fputcsv($fileHandler, $handle, $fields, $delimiter, $enclosure, $escape_char);
        rewind($fileHandler);
        $csvString = rtrim(stream_get_contents($fileHandler), "\n");
        fclose($fileHandler);

        return $csvString;
    }
}
Roman Zhuravlev  
  • Репутация: 4
  • Сниппеты: 2
  • Ревизии: 0
/**
 * Вычисляет расстояние между двумя точками по gps-координатам
 *
 * @param float $lat1
 * @param float $lng1
 * @param float $lat2
 * @param float $lng2
 * @return int расстояние в метрах
 */
function distance($lat1, $lng1, $lat2, $lng2)
{
    $cosLat1 = cos($lat1 * M_PI / 180);
    $cosLat2 = cos($lat2 * M_PI / 180);
    $sinLat1 = sin($lat1 * M_PI / 180);
    $sinLat2 = sin($lat2 * M_PI / 180);
    $cosDelta = cos(($lng2 - $lng1) * M_PI / 180);
    $sinDelta = sin(($lng2 - $lng1) * M_PI / 180);

    $dist = atan2(
        sqrt(
            pow($cosLat2 * $sinDelta, 2) +
            pow($cosLat1 * $sinLat2 - $sinLat1 * $cosLat2 * $cosDelta, 2)
        ),
        $sinLat1 * $sinLat2 + $cosLat1 * $cosLat2 * $cosDelta
    ) * 6372795;

    return round($dist);
}

assert(distance(77.1539, -139.398, -77.1804, -139.55) == 17166029);
assert(distance(77.1539, 120.398, 77.1804, 129.55) == 225883);
assert(distance(77.1539, -120.398, 77.1804, 129.55) == 2332669);