Pergunta

Eu sou novo para PHP e estou confuso vendo alguns exemplos chamando uma função com um prefixo @ como @mysql_ping ().

O que é isso? Pesquisando / pesquisa não é muito de uma ajuda desde @ fica descartado e 'alias' não é boa palavra-chave suficiente.

Foi útil?

Solução

@ suprime erros, avisos e avisos.

Você pode usá-lo para um bom propósito, se você complementá-lo com um costume manipulador de erro ou com a devida verificação de US $ variável php_errormsg para que possa lidar com os erros adequadamente.

Em minha experiência, este uso adequado não é visto muito e em vez disso é usado muito no mau caminho, apenas para esconder erros sem agir sobre eles.

Mais informações em http://www.php.net/ manual / en / language.operators.errorcontrol.php

Outras dicas

Ele suprime a saída de mensagens de erro. Ao contrário do outro comentador aqui, eu acho que é uma boa prática de programação para usá-lo (especialmente se você estiver desenvolvendo uma aplicação web, onde a saída seria misturada no HTML da página de saída).

Funções como mysql_connect retornar um identificador de recurso, ou FALSE em erros. Use @ mysql_connect (...) e verificar o valor de retorno.

pesquisando por "php no símbolo" sugere que ele pede PHP para não exibir quaisquer mensagens de erro que as causas de chamada.

Ele suprime quaisquer erros que poderiam ser emitidos.

É uma receita para a dor e sofrimento, uma vez que conduz inevitavelmente a dificuldades Quando ocorre um erro, você é obrigado a passar horas rastrear a causa. Se o operador @ não tinha sido utilizado, em seguida, o erro teria sido encontrado em segundos.

Não há nenhuma boa razão para usá-lo, use as display_errors e error_log configurações ini para evitar erros de exibir em um site ao vivo, e deixá-los ser mostrado em seu site desenv.

Se houver um erro que você não quer ver, você está melhor fora apenas corrigi-lo do que suprimi-la!

Se é algo em uma lib externo e fora de seu controle, basta escrever para os logs, desligue display_errors em produção, e viver com ele. Porque não há como dizer se o erro que você está suprimindo agora e estamos felizes de viver com sempre será o erro que é lançada a partir de lá.

@ === BAD

mensagens de erro Suprimir: http://bytes.com/forum/thread10951.html

Se anteceder uma função com o símbolo pára-lo acionando o manipulador de erro PHP se ocorrer um erro. Tenha em mente que você deve fazer todo o tratamento de si mesmo se você decidir usá-lo de erro.

$test = @file_get_contents('nonexistant.file');
if(!$test)
{
    die('Failed');
}

A melhor prática é transformar display_errors off e manipuladores de erro uso personalizado (veja erro de exceção ).

Às vezes é útil- especialmente se o administrador não quer que você jogar com o ambiente php ou o valor não é importante e é principalmente cosmética. Lembre-se, embora; é uma solução, não uma panacéia.

[...]

.$foutDate = @filemtime($keyring); /* Don't care, as we've already established file */

$f["date"] = $foutDate;

$f["fullDate"] = date("r", $foutDate);

[...]

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top