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 }

 

Jenkins job для генерации swagger API

Пример jenkins джобы для генерации swagger-API. 

Это bash-код, который нужно добавить в секцию "execute shell".

Анализ производительности MySQL с использованием performance_schema

performance_schema — мощный встроенный в MySQL инструмент, который вы можете использовать для анализа запросов, производительности и, как следствие, для улучшения производительности базы данных.

По своей сути, performance_schema, это автоматически созданная MySQL база данных, которая внутри себя содержит множество служебных таблиц, в которые MySQL любезно пишет данные.

Подключаем PHP code sniffer (phpcs) в PHPStorm

Чтобы использовать PHP code sniffer в phpstorm, перво-наперво его нужно установить.

phpcs --version

Если в системе php-codesniffer не установлен, нужно его установить.

MacOS сбросить root пароль для MySQL

Я установил mysql-сервер на свою macOS Mojave, скачав .dmg пакет с официального сайта MySQL.

При установке mysql, установщик не запрашивал никакого root пароля, но в конце выдал сообщение, что пароль для root - dufQqAt00Z, и сообщение сохранить этот пароль.

Я сохранил себе этот пароль (возможно, не скопировав его полностью?). 

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