Как стать автором
Обновить
22
0
Дмитрий @xEpozZ

Готовлю кофе в аэропрессе, а php в докере.

Отправить сообщение

У меня Mac, под Windows не тестировал. Скорее всего реализации работать не будут, а отключение функций будет.

Не отключать функции не получится. Цель отключения – это заменить функцию из глобального неймспейса на свою подмену. Иначе все вызовы \time() будут всегда идти в оригинальную функцию.

А реализовать саму функцию через `php -r 'echo time()';` – хорошая идея.

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

Конструкция с кавычками могут задаваться пользовательском коде, поэтому пользователь вправе писать любую конструкцию.

В каком таком отличии от mui эта библиотека позволяет навестить собственные стили?

Mui очень сильная по функционалу переопределения и расширения функционала библиотека. Она позволяет как изменить дефолтные стили компонентов, так и добавить свои собственные "пресеты" (варианты), так и полностью или динамически изменить весь компонент.

Стоит изучить ее возможности.

Если говорить про Symfony, то у них есть официальная интеграция с mercure в виде отдельного бандла.

Писать собственные веб-сокет серверы крайне не рекомендую. Особенно на пхп. Особенно с нуля.

P.S. Это конечно не полноценный WS, но покрывает множество случаев, когда требуется реалтайм с PHP бекендом.

Коллеги, работавшие и работающие с laravel часто высказывают ровно противоположное мнение. Да и сам натыкался на отсутствие внятной документации несколько лет назад, когда был проект на laravel.

Что касается PHPDoc, то его всегда стоит держать актуальным, примеры там часто спасают инспекцию кода. Документация будет строится и отдельно от PHPDoc, с примерами, туториалами и объяснениями. Данный цикл статей и направлен на развитие этой части ;)

Сейчас можно использовать как обычный шаблонизатор, так и twig расширение. Список можно найти здесь: https://github.com/yiisoft/view#extensions

Если нужен какой-то другой, то можно создать issue/pull request и перевести поддержку на core команду.

Если речь про виджеты, используемые в представлениях, то ответ – да, они есть.

По ссылке https://github.com/yiisoft/yii-widgets/#general-usage можно ознакомится с текущими виджетами.

Для кастомных виджетов можно пользоваться библиотекой https://github.com/yiisoft/widget. Там же есть примеры создания своих виджетов, а так же их "первичной" настройкой.

Вы серьезно думаете, что Стейт машина должна ходить в бд и читать консоль?

Как на счёт отправки смс и вебсокетов? :)

PHPUnit 9.0 умеет сам запускаться параллельно, попробуйте этот способ
Верно вы подметили с $model — я имел ввиду построитель запросов.
Я хотел сказать, что запросов умеет работаеть с кастомным текстом

Давайте возьмем за основу ваш пример. Его можно сделать вот так:
$queryBuilder = (new \yii\db\Query())
    ->select('*')
    ->from([
        't' =>
            (new \yii\db\Query())
                ->select('*')
                ->from('tab')
                ->where([
                    'id2' => 22,
                ]),
    ])
    ->where([
        't.id1' => 11,
    ]);
var_dump($queryBuilder->createCommand()->rawSql);

Выдает
SELECT * FROM (SELECT * FROM "tab" WHERE "id2"=22) "t" WHERE "t"."id1"=11


Если в where, from, select, orderBy, groupBy и любых других местах нужно использовать кастомные вещи, то можно сделать это с помощью \yii\db\Expression

Пример:
Задача: нужно сделать поиск по таблице users с использованием оператора LIKE по двум колонкам: name, surname.
Сделать это можем вот так:
$queryBuilder = (new \yii\db\Query())
    ->select('*')
    ->from('users')
    ->where(new \yii\db\Expression('CONCAT_WS(" ", name, surname) LIKE :query', ['query' => '%Вася%']));

Выведет следующее:
SELECT * FROM "users" WHERE CONCAT_WS(" ", name, surname) LIKE '%Вася%'


Можно и так:

$queryBuilder = (new \yii\db\Query())
    ->select('*')
    ->from('users')
    ->where(['LIKE', new \yii\db\Expression('CONCAT_WS(" ", name, surname)'), 'Вася']);

Выведет следующее:
SELECT * FROM "users" WHERE CONCAT_WS(" ", name, surname) LIKE '%Вася%'


Тоже самое можно делать и в select(), и в from(), и в groupBy(), и в orderBy(), и в having() — везде в общем :)
Конструктор where у yii находится на уровне построителя запросов, на этом уровне невозможно написать любой sql запрос, оно и понятно в yii сделали так, что при написании запросов с помощью построителя запросов ты не привязан к БД. А мне нужно писать sql запросы использующие уникальные возможности определенной БД (Oracle).

$model->where(new \yii\db\Expression('SQL CODE'))
Быть может, это ограничение можно прочитать как «возвращаемый тип должен быть типом производного класса». Т.е. если в производном классе вернуть объект базового класса, то словим ошибочку.
Статик говорит не о родителе, а о текущем классе.
Если унаследовать этот класс, то doWhatever будет возвращать объект того самого производного класса (как и без этой rfc). Только об этом вы явно укажите в возвращаемом типе и ваше IDE будет видеть дополнительные методы из производного класса.
Сейчас это делается через PHPDoc с помощью
@return static
Странные же люди :)
Писал nikic по поводу фичи Static return type аж 23 декабря.
Он так и не ответил, зато через 2.5 недели после письма выкатывает RFC.
Соавторство в 2019 2020 уже не то.
Микросервисы на пхп? Может просто допилим архитектуру проекта и все?
Композер, глобальные переменные, тесты, роутинг. Изучайте
В чем-то была замечана аномалия их поведения?
Честно, так и не понял, что хотел автор донести. Если глянуть на самый первый комментарий, то человек прав.
Ваши 4 характеристики знакомы всем, кто хотя бы раз использовал эти статические свойства в классах.
А если не использовали, то дорога на php.net, а не сюда
однако странный стиль написания кода у Вас

Информация

В рейтинге
Не участвует
Откуда
Воронеж, Воронежская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Fullstack Developer, Software Architect
Lead
От 500 000 ₽
PHP
PostgreSQL
Python
Docker
Symfony
React
JavaScript
TypeScript
Designing application architecture
Monitoring