Что нового в PHP 8.1

Golang: Прочитать буфер ioutil.ReadAll from io.ReadWriter без потери контента

Давайте вычитаем контент используя golang функцию ioutil.ReadAll из io.ReadWriter таким образом, чтобы контент остался в буфере.

Golang readAll из ioutil вычитать контент без потери контента

Давайте предположим, что мы создаем буфер таким образом:

out := new(bytes.Buffer)

Doctrine ODM fetch documents with empty object (field type hash with no values)

Пускай у меня будет такая структура json.

Использую Doctrine и ODM. Нужно получить все записи из mongoDb где поле с типом hash является пустым объектом, то есть не имеет ни одного значения.

message related to SharedArrayBuffers from Google Search Console

В марта 2021 вы могли получить email от Google Search Console с темой "New requirements for SharedArrayBuffers" (Новые требования для SharedArrayBuffers).

Сообщение выглядело примерно так:

Не все пользователи поняли в чем именно дело, кто-то начал разбираться в чем дело, кого-то это совсем не касается.

Почему вы получили это сообщение о SharedArrayBuffer?

Это сообщение вы получили потому что Google обнаружил на вашем сайте Javascript-код, который использует SharedArrayBuffer в тот момент, когда вы получили это предупреждение. Использование SharedArrayBuffer может быть не явно в вашем коде, а может быть из-за использования сторонних фреймворков, библиотек или других 3rd-party компонентов, используемых на сайте.

 

 

PHP 8 — что нового в 8-ой версии php

PHP 8.0 что нового

Новые нативные функции:

str_contains — для проверки есть ли подстрока в строке.

str_contains(string $haystack, string $needle): bool

Сказать git какой из ssh-ключей использовать

В случае если в папке ~/.ssh лежит более одной пары ключей, может понадобиться использовать тот или другой ключ в зависимости от того, к какому ресурсу мы хотим конектиться.

Codeship - беслатный CI-сервер для приватного репозитория (Symfony 5 functional tests)

Начал использовать codeship как CI для symfony5 приватного репозитория на github.

Впечатления положительные. Можно настроить CI через codeship веб-интерфейс, не добавляя не единого нового файла в проект.

Итак, для codeshipCI + private repo нам нужно следующее.

Работаем с PostgreSQL через командную строку в Linux

Для подключения к базе данных PostgreSQL понадобится установленный PostgreSQL клиент:

sudo apt install postgresql-client-<VERSION>

Например:

sudo apt install postgresql-client-12

Для подключения к базе данных PostgreSQL можно использовать команду:

psql -U<USERNAME> -h<HOSTNAME> -d<DB_NAME> 

Если такая команда не просит ввести пароль пользователя, то можно еще добавить опцию -W.

Например:

$ psql -Usrv161924_dom -hpgsql-161924.srv.hoster.ru -dsrv161924_dom -W
Password for user srv161924_dom: 

 

symfony4 Пример использования ORMPurger для WebTestCase

В случае, если нам нужно протестировать экшены контроллера, при этом предварительно очистив данные из базы данных, можно использовать класс ORMPurger. Он является частью пакета doctrine/data-fixtures, который в свою очередь является зависимостью doctrine/doctrine-fixtures-bundle.

Таким образом, для использования ORMPurger нужно установить либо:

composer require --dev doctrine/doctrine-fixtures-bundle

Скорее всего doctrine-fixtures-bundle вам и нужен, чтобы можно было создавать fixtures.

Либо хотя-бы:

composer require --dev doctrine/data-fixtures

Теперь можно добавить код в тест, который является наследником WebTestCase.

self::bootKernel();

// returns the real and unchanged service container
$container = self::$kernel->getContainer();
$entityManager = $container->get('doctrine.orm.entity_manager');

$purger = new ORMPurger($entityManager);
$purger->setPurgeMode(ORMPurger::PURGE_MODE_DELETE);
$purger->purge();

 

KnpMenuBundle: строим меню для категорий и подкатегорий в symfony 4

Меню-билдер в лучших традициях симфони лучше объявить как сервис.

Создаем сервис "объявим сервис app.knp.sidebar_menu в файле config/packages/knp_menu.yaml:

Содержимое config/packages/knp_menu.yaml:

knp_menu:
    twig:
        template: custom_knp_menu.html.twig

parameters:
    knp_menu.renderer.twig.options:
        currentClass: sel

services:
    app.knp.sidebar_menu:
        class: Knp\Menu\MenuItem
        factory: ['@App\Menu\MenuBuilder', createSidebarMenu]
        arguments: ["@request_stack"]
        tags:
            - { name: knp_menu.menu, alias: sidebar_menu }

 

НОВЫЕ ПОЛЬЗОВАТЕЛИ