Size: a a a

2020 July 02

AM

Artem Molotov in PHP
1) речь была о устранении @ как оператора подавления ошибок
2) я предложил локальный set_error_handler + restore_error_handler
3) ты согласился, что вариант и привёл беспроблемный синхронный код
4) потом я допетрил, что будут баги на асинхонном
5) ?????
источник

MM

Maksim Masiukevich in PHP
нет, потом ты дописал хуйни
источник

KN

Kirill Nesmeyanov in PHP
не, я сказал, что это пиздец костыли тогда)
источник

KN

Kirill Nesmeyanov in PHP
и что пока что без собаки мб и можно жить, но лучше использовать там, где она нужна и под контролем
источник

AM

Artem Molotov in PHP
Maksim Masiukevich
нет, потом ты дописал хуйни
ок, спасибо, раз так, то не буду писать хуеты и будем юзать оператор подавления ошибок (или set_error_handler в асинхронном коде)
источник

KN

Kirill Nesmeyanov in PHP
а не костылять ради избавления от неё
источник

MM

Maksim Masiukevich in PHP
Artem Molotov
ок, спасибо, раз так, то не буду писать хуеты и будем юзать оператор подавления ошибок (или set_error_handler в асинхронном коде)
хоспаде, да что ты знаешь про асинхронный код?)
источник

AM

Artem Molotov in PHP
Maksim Masiukevich
хоспаде, да что ты знаешь про асинхронный код?)
нихуя, это же очевидно
источник

AM

Artem Molotov in PHP
я же только быдлокодер на пхп без каких либо знаний
источник

MM

Maksim Masiukevich in PHP
ну по набросам оч заметно
источник

KN

Kirill Nesmeyanov in PHP
это дескриминация быдлокодеров!
источник

KN

Kirill Nesmeyanov in PHP
#BydlocodersLivesMatter
источник

MM

Maksim Masiukevich in PHP
в асунк коде у тебя будет

        try
       {
           yield mkdir($dir, 0777, true);
       }
       catch(\Throwable $throwable)  { }

       yield $this->blah()


или так:
        mkdir($dir, 0777, true)->onResolve(
           function(?bool $result, ?\Throwable $throwable) use ($dir) {
               if($throwable !== null) {
                   throw $throwable;
               }

               is_dir($dir)->onResolve(
                   function(?bool $result, ?\Throwable $throwable)  {
                       if($throwable !== null) {
                           throw $throwable;
                       }

                       $this->blah()->onResolve(...);
                   }
               );
           }
       );
источник

MM

Maksim Masiukevich in PHP
функции mkdir и is_dir в примере очевидно не из числа стандартных
источник

MM

Maksim Masiukevich in PHP
второй вариант можно "развернуть", но сути особо не изменит
источник

AM

Artem Molotov in PHP
Maksim Masiukevich
в асунк коде у тебя будет

        try
       {
           yield mkdir($dir, 0777, true);
       }
       catch(\Throwable $throwable)  { }

       yield $this->blah()


или так:
        mkdir($dir, 0777, true)->onResolve(
           function(?bool $result, ?\Throwable $throwable) use ($dir) {
               if($throwable !== null) {
                   throw $throwable;
               }

               is_dir($dir)->onResolve(
                   function(?bool $result, ?\Throwable $throwable)  {
                       if($throwable !== null) {
                           throw $throwable;
                       }

                       $this->blah()->onResolve(...);
                   }
               );
           }
       );
Я говорил о ситуациях с использованием set_error_handler для подавления ошибок (к примеру, как выше по ссылке сделала Доктрина).

Т.е. условно следующее работать не будет и кто решит так написать получит баг:

private function get(string $key) : Promise
   {
       return call(function () {
           // note: error suppression is still faster than `exists`
           set_error_handler(self::$emptyErrorHandler);

           $item = $this->storage[$key];

           restore_error_handler();
       });

...

yield $obj->get('blah');
источник

AM

Artem Molotov in PHP
Пример высосан из пальца, что бы не было блокирующих функций, но было хоть какое-то подавление ошибок
источник

AM

Artem Molotov in PHP
с set_error_handler у этого человека, само собой, будет откровеннейшая бяда, когда c @ её не было бы
источник

MM

Maksim Masiukevich in PHP
у тебя эта функция будет выполнена в 1 тике
источник

AM

Artem Molotov in PHP
Maksim Masiukevich
у тебя эта функция будет выполнена в 1 тике
так её могут запускать от разных объектов в разных местах и тогда нет
источник