Pergunta

Basicamente, eu tenho um monte de links em uma página e vou usar algo como isto

<?PHP echo $SITE_PATH ?>

Muitas e muitas vezes na mesma página, mas ele irá mostrar um Aviso em PHP para fazer isso.

Eu sei que você é suposto para usar coisas como isset() mas é que eu realmente precise usá-lo cada vez que eu o chame?

<?PHP echo $SITE_PATH ?>

--- EDITAR :
Se eu passar a usar uma variável definida e, em seguida, os anúncios parecem ir longe

Foi útil?

Solução

Duas soluções, aqui :

  • utilize apenas as variáveis que existem, que é o que você provavelmente deve fazer.
  • ou testar se é que eles existem (com isset) antes de tentar utilizá-los.

Não há mágica ^^

Se o seu aplicativo está usando muitos não-conjunto de variáveis, você provavelmente tem algum problema em seu design.


Em um caso como a que você apresentou, para uma variável que é usado muitas vezes, eu teria certeza de que ela existe, e, se não, ajuste-o para ", por exemplo, no início do meu script.

Isso não é realmente de grande procura, mas ele vai trabalhar-e, desta forma, você não tem que ir através de toda a sua aplicação, aplicação de patches de tudo.

(Ou talvez eu também desativar o E_NOTICE error_reporting nível-eu não gosto dessa idéia, mas, às vezes, é realmente a única maneira de lidar com algum código de base)

Outras dicas

Você pode suprimir mensagens usando @:

print @$site_path;

Ou você pode usar um ternário operação para obter um valor predefinido:

print (isset($site_path)) ? $site_path : "default_path" ;

No final, porém, você não deve estar usando variáveis que não são definidas.Se você estiver, você precisa repensar a sua abordagem.Lidar com essas informações up-front, de modo que o resto de seus scripts podem ser executados sem problemas como este.

Você realmente deve garantir que uma variável seja definida antes de usá -la (especialmente ecoando -a na página). Se a variável vier de uma fonte insegura ($ _Get, $ _Post, banco de dados), você deverá fazer algum tipo de filtragem para evitar uma violação de segurança (Script do Site Cross (XSS), Cross Solicy Solicy Perdice (CSRF), etc. .) Mas se você sentir que tudo está seguro e simplesmente não deseja mostrar erros (por exemplo, em produção) defina seu erro de relatório para 0.

Por exemplo error_reporting(0);

Você pode fazer isso no nível php.ini ou por página (definido error_reporting(0); no topo da página).

Em uma nota lateral, quando em produção você nunca deseja exibir erros. Registre -os em vez disso. No desenvolvimento, você deseja ver todos os seus erros (e_strit).

Você pode criar uma função para verificar se a variável está definida e devolvê -la:

function EchoVar() {
    global $SITE_PATH;
    return isset($SITE_PATH) ? $SITE_PATH : '';
}

// calling it
echo EchoVar();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top