Pull to refresh
58
0
Илья Гусев @iGusev

PHP Разработчик

Send message
На то оно и программирование, что существует множество вариантов.
Вот пример из оф. документации

Example #1 Anonymous function example

<?php
echo preg_replace_callback('~-([a-z])~', function ($match) {
    return strtoupper($match[1]);
}, 'hello-world');
// outputs helloWorld
?>

Который превращается в:

<?php
echo preg_replace_callback('~-([a-z])~', fn ($match) => strtoupper($match[1]), 'hello-world');
// outputs helloWorld
?>
Все верно, ваш вариант проще в конкретном примере, но если нужно что-то сложнее?
$vat = 0.2;
$total = array_sum(
    array_map(
        function (Order $order) use ($vat) {
            return $order->price + $order->price * $vat;
        },
        $orders
    )
);

$vat = 0.2;
$total = array_sum(
    array_map(
        fn (Order $order): float => $order->price + $order->price * $vat,
        $orders
    )
);


Либо это какой-то троллинг, либо я чего-то не понимаю. В языке была проблема, ее стали решать на уровне языка (а не костылей). В чем неправильность?

Все понятно. Вы недовольны тем, что нужно будет писать чуть более длинную функцию с доп. параметрами:


Я настоятельно рекомендую вам начать использовать эту функцию.

Дадад, и писать каждый раз эту колбасу


json_decode($json, false, 512, JSON_THROW_ON_ERROR); 

вместо


Json::decode($json);

Ответ: нет, писать не нужно, потому что во всех библиотеках давно есть обертки, где все это уже написано. В RFC предлагается начать с малого и не ломать совместимость, для начала сделали так, затем будет изменено поведение по умолчанию:


Future Scope
As mentioned earlier, it may be desirable to deprecate the default behaviour eventually.

Во всех современных фреймворках есть возможности для сериализации через обертки (например Symfony или Laravel) для безфреймворкового использования подойдет GuzzleHttp::json_decode() или любой другой свой вариант с обработкой на невалидность json.

Это не означает, что нужно именно так писать. Я, например, использую обертку над json_decode() из guzzle:


/**
 * Wrapper for json_decode that throws when an error occurs.
 *
 * @param string $json    JSON data to parse
 * @param bool $assoc     When true, returned objects will be converted
 *                        into associative arrays.
 * @param int    $depth   User specified recursion depth.
 * @param int    $options Bitmask of JSON decode options.
 *
 * @return mixed
 * @throws \InvalidArgumentException if the JSON cannot be decoded.
 * @link http://www.php.net/manual/en/function.json-decode.php
 */
function json_decode($json, $assoc = false, $depth = 512, $options = 0)
{
    $data = \json_decode($json, $assoc, $depth, $options);
    if (JSON_ERROR_NONE !== json_last_error()) {
        throw new \InvalidArgumentException(
            'json_decode error: ' . json_last_error_msg()
        );
    }
    return $data;
}

В 7.3 будет тоже самое, только теперь в самом PHP

В целом да, но в частности — внешних зависимостей, кроме dev, пока ещё нет, а при работе с монорепозиторием зависимость всегда последняя (для внутренних репозиторий).
Это реализация популярной каты для практики использования подходов и паттернов
Собственно, почему не взять лучшее из обоих фреймворков?

image
Разработчик не на PHP и его предрассудки особенности.
Спасибо, верно подмечено
Ubuntu. Русификация консоли в 2016 году

image
Спасибо за дополнение. Добавил в текст
Ну все-таки не совсем, есть хуки для инсталляции и для апдейта, они необязательно одинаковы
2 строчки текста + обзорное видео своего продукта как-то не тянут на туториал...
Мы с вами в одном мире живем?

Судя по дате статьи я уже года на 4 впереди
Я за удовольствие от процесса работы)
Они все будут по производительности как array, полифил скорее для тестов и подсветки в IDE предназначен
Может стоит сменить клиентов?

Information

Rating
Does not participate
Location
Казань, Татарстан, Россия
Date of birth
Registered
Activity