es
Feedback
PHP задачи с собеседований

PHP задачи с собеседований

Ir al canal en Telegram

Задачи, тесты и теоретические вопросы по PHP. Прислать задачу/вопрос в дар: @cyberJohnny Сотрудничество: @cyberJohnny

Mostrar más
2 905
Suscriptores
-224 horas
-17 días
-1330 días
Archivo de publicaciones
[PHP 7.4] Что выведет код?
[PHP 7.4] Что выведет код?

Объяснение👆 спасибо за него автору канала @phpyh Функция генератора, которую мы обсуждали в прошлый раз, позволяет не только генерировать значения при помощи оператора yield, но и вернуть ещё одно значение через return. Вызывающая сторона может его получить присваиванием $return = yield from $generator или вызовом $generator->getReturn() после полного обхода генератора. Оба варианта используются в коде викторины. Когда это может быть полезно? Если в ходе работы функции генератора накапливается какая-то дополнительная информация, её очень удобно возвращать через return. Например, при построчном анализе большого Excel валидные строки отдаём через yield, а информацию о невалидных строках собираем в массиве и отдаем через return. Про return также важно помнить при декорации функций генератора, иначе возвращаемое значение обратится в null. Пример про курсор и транзакцию из прошлого пояснения с учетом этого нюанса: /** * @template TKey * @template TValue * @template TSend * @template TReturn * @psalm-param callable(self): \Generator<TKey, TValue, TSend, TReturn> $cursor * @psalm-return \Generator<TKey, TValue, TSend, TReturn> */ function transactionally(callable $cursor): Generator { $this->connection->beginTransaction(); $result = yield from $cursor(); // try/catch/rollback опущены $this->connection->commit(); return $result; }

Что выведет код?
Anonymous voting

Что выведет код?
Что выведет код?

Что выведет код?
Anonymous voting

Что выведет код?
Что выведет код?

[PHP 7.4] Что будет в переменной $array после выполнения кода?
Anonymous voting

[PHP 7.4] Что будет в переменной $array после выполнения кода?
[PHP 7.4] Что будет в переменной $array после выполнения кода?

Что выведет данный скрипт в результате своей работы?
Anonymous voting

Что выведет данный скрипт в результате своей работы?
Что выведет данный скрипт в результате своей работы?

Поддерживается ли множественное наследование в PHP?
Anonymous voting

[REST] Одним из главных особенностей RESTFull является идемпотентность. Это так?
Anonymous voting

Объяснение 👆 и спасибо за него автору канала @phpyh Функция является функцией генератора только если она содержит хотя бы один yield (https://www.php.net/manual/ru/language.generators.syntax.php). Тип возвращаемого значения Generator не делает функцию функцией генератора. Отличие обычной функции от функции генератора в том, что первая при обращении выполняется сразу, а вторая лишь возвращает обходимый объект со ссылкой на свой код (собственно, генератор). Код тела функции генератора начинает выполняться только в момент вызова любого метода генератора. Как правило, это происходит неявно при обходе генератора в цикле. В предложенной задаче только a() и c() являются функциями генератора, и ни одна из них в этом скрипте так и не начнёт выполняться. Функция b() является обычной функцией и при обращении отработает синхронно: сначала выведет 'php', затем получит объект генератора от a() и вернет его незапущенным. https://3v4l.org/kpIIu Данный нюанс может иметь очень большое значение. Например, при оборачивании генерирующего курсора в транзакцию. Неправильно (подумайте, почему): /** * @psalm-param callable(): Generator $cursor */ transactionally(callable $cursor): Generator { $connection->beginTransaction(); $result = $cursor(); // try/catch/rollback опущены $connection->commit(); return $result; } Правильно: /** * @psalm-param callable(): Generator $cursor */ transactionally(callable $cursor): Generator { $connection->beginTransaction(); yield from $cursor(); // try/catch/rollback опущены $connection->commit(); }

Какая функция выведет "php"?
Anonymous voting

Какая функция выведет "php"?
Какая функция выведет "php"?

Что выведет код - echo var_dump($unsetVar); ?
Anonymous voting

Что выведет код: echo -1 == true; ?
Anonymous voting

[PHP 7.4] Отработает ли данный код?
Anonymous voting

[PHP 7.4] Отработает ли данный код?
[PHP 7.4] Отработает ли данный код?

Что выведет код?
Anonymous voting