Подскажите для чево используется @ в пхп

Тема в разделе "PHP", создана пользователем Smile, 30 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Smile

    Smile Нарушитель

    Регистр.:
    12 ноя 2006
    Сообщения:
    157
    Симпатии:
    11
    Привет всем... подскажите для чево используется @ в пхп...

    есть вот такой пример:

    1. @fopen( @$abc, "r" )
    2. fopen( $abc, "r" )

    по функц. 1 строка тоже самое что и 2... но какая разница между ними будет ?

    заранее спс.
     
  2. Conwell

    Conwell

    Регистр.:
    23 мар 2009
    Сообщения:
    337
    Симпатии:
    177
    Префикс @ отключает вывод возможных сообщений об ошибках в данной функции. Возможно импользование для всех функций.
     
    Stripe и Smile нравится это.
  3. ex3mer

    ex3mer Создатель

    Регистр.:
    19 ноя 2007
    Сообщения:
    21
    Симпатии:
    5
    Для того, чтобы не выводились ошибки при работе данной функции, если она не может быть выполнена или выполнена некорректно... Как-то так...
     
    Stripe и Smile нравится это.
  4. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    Выдержка из мануала (PHPmanual/ru/language.operators.errorcontrol.html)

    Оператор управления ошибками
    PHP поддерживает один оператор управления ошибками: знак @. В случае, если он предшествует какому-либо выражению в PHP-коде, любые сообщения об ошибках, генерируемые этим выражением, будут проигнорированы.

    Замечание: Оператор @ работает только с выражениями. Есть простое правило: если произвольная языковая конструкция возвращает значение, значит вы можете использовать предшествующий ей оператор @. Например, вы можете использовать @ перед именем переменной, произвольной функцией или вызовом include(), константой и так далее. В то же время вы не можете использовать этот оператор перед определением функции или класса, условными конструкциями, такими как if или foreach.

    Замечание: Оператор @ не подавляет вывод ошибок, возникающих на стадии синтаксического разбора скрипта.

    PHP:
    <?php
    // Преднамеренная ошибка при работе с файлами
    $my_file = @file ('non_existent_file') or
        die (
    "Failed opening file: error was '$php_errormsg'");

    // работает для любых выражений, а не только для функций
    $value = @$cache[$key]; 
    // В случае если ключа $key нет, сообщение об ошибке не будет отображено
    ?> 
    Внимание
    На сегодняшний день оператор @ подавляет вывод сообщений даже о критических ошибках прерывающих работу скрипта. Помимо всего прочего, это означает, что если вы использовали @ для подавления ошибок, возникающих при работе какой-либо функции, в случае если она недоступна или написана неправильно, дальнейшая работа скрипта будет остановлена без каких-либо уведомлений.
     
    Stripe нравится это.
  5. babon

    babon Создатель

    Регистр.:
    24 авг 2008
    Сообщения:
    25
    Симпатии:
    0
    по мне дак, лучше через try catch отловить ошибку, чем так извращаться.
     
  6. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Собака ставится для того чтобы заглушить нотайсы те ошибки скрипта..очень дурная практика... никогда так не делайте ..
    наоборот вы должны видеть ошибки чтобы правильно отладить скрипт..используйте error_reporting(E_ALL);
     
  7. _NoName_

    _NoName_ Создатель

    Регистр.:
    27 фев 2009
    Сообщения:
    26
    Симпатии:
    6
    А наверное самое главное, что нужно о собаке знать, так это ее тормознутость, лучше избегать ее вообще в проектах, слишком вилико ее побочное действие которое влияет на скорость выполнения скрипта!!!!
     
  8. ebony_trader

    ebony_trader Создатель

    Регистр.:
    7 апр 2009
    Сообщения:
    24
    Симпатии:
    6
    о собаке вообще нужно знать))
     
  9. phpdude

    phpdude Создатель

    Регистр.:
    8 ноя 2008
    Сообщения:
    42
    Симпатии:
    10
    _NoName_ вы похожи на параноика из 70ых .... собака ничто по сравнению с теми же алгоритмами, которые пишет среднестистический "программист".
     
  10. Atec

    Atec

    Регистр.:
    28 апр 2007
    Сообщения:
    296
    Симпатии:
    31
    +1... лучше если не нужны ошибки или ностисы использовать error_reporting а то потом как начнешь эти дурацкие собачки убирать из скриптов и искать какая же горе функция неверно работает... пппц какойто
     
Статус темы:
Закрыта.