собачники против кинофобов

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Счастливые посетители DevConf 12 помнят тот шикарный флейм, когда сошлись в поединке SamDark и Фанат.
Тема собак, великого и ужасного оператора @, обсуждалась так бурно, что собрала вокруг несколько десятков человек. Даже грохот музыки из колонок на сцене не помешал святой войне.

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

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

Сделаем большое Talk-шоу. Сначала по 5-10 минут каждой стороне для обоснования почему собаки - хорошо, затем - почему их надо убивать. Затем - дебаты, вопрос-ответ.

http://phpfaq.ru/misc/comic.jpg

Stay tuned :)
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Последнее редактирование:

Вурдалак

Продвинутый новичок
а что, писать 20 строк обработки на каждый fopen, или оборачивать каждый вызов в error handler?
Проблема с отсутствием нормальных IO исключений — это проблема PHP. Которая, я надеюсь, в будущем будет решена введением альтернативного API для FS. Лично мне пока хватает обычных исключений (ErrorException). На уровне фреймворка — ну, это костыли, workaround, etc. Это ж PHP.

includ-ы ты тоже будешь оборачивать в try-catch?
Я не буду пытаться include'ить то, что может не существовать. Если такое произошло, то это достойно исключительной ситуации и остановки приложения.

Собака в моих глазах — это полная альтернатива catch (Exception $e) { /* we don't give a fuck */ }. Такое бывает редко, можно и написать, не надорвёшься. Если бывает часто — у тебя проблема.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
когда "можно и написать" - по Бритве Оккама лучше собаку ;)

ну, это костыли, workaround, etc. Это ж PHP.
не думаю, что им всем лень было написать обертку и просто накостылили, и даже знаю, что в yii это осознанный выбор
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Я не буду пытаться include'ить то, что может не существовать. Если такое произошло, то это достойно исключительной ситуации и остановки приложения.
А как насчет такой ситуации? stat кешируется, а кеш устаревает и файл может удалить другой процесс, это нормально и не должно приводить к исключительной ситуации, как в Доктрине.
Так ли нечего тут обсуждать в 2014м?
 
Последнее редактирование:

Welcome

Новичок
А что,
PHP:
set_error_handler(function($errno, $errstr){
    throw new \Exception($errstr, $errno);
});
не подойдет, для тех, кто против применения собак? :)
 

HORO

Новичок
чем конкретно плоха собака что её нужно удалить из PHP?
 

Dez

Новичок
А разработчики yii за использование @ ?
Вроде в коде фреймворка (yii2) особо и не встречал, поиск тоже не дал успеха.
 

Redjik

Джедай-мастер
Absinthe, https://github.com/Redjik/Filesystem/blob/master/vendor/Redjik/Filesystem/Filesystem.php#L1261
Код:
    * @throws PermissionException
    * @throws DoesNotExistException
    * @throws NotADirectoryException
    * @throws ExistException
Не во всех случаях. Например, __toString, или register_shutdown_function.
можно конкретнее, не совсем понимаю в чем проблема
 

Absinthe

жожо
PHP:
<?php

class A
{
    function __toString()
    {
        throw new \Exception("hello?");
    }
}

try {
    echo new A();
} catch (\Exception $e) {
  echo ":(";
}
 
Сверху