Pergunta

Na equipe com a qual eu trabalho, temos uma base de código antigo usando ibase_ do PHP * funções de todo o código para se comunicar com banco de dados. Nós criamos um wrapper para ele que iria fazer outra coisa ao lado apenas chamando a função original e eu fiz uma massa de busca substituir por todo o código para se certificar de que wrapper é usado.

Agora, como é que vamos impedir o uso de ibase_ * funções no futuro?

De preferência, eu gostaria de tê-los disponíveis, mas torná-lo jogar uma notificação ou aviso quando ele é usado.

Uma solução em PHP puro (não necessitando de compilar uma versão personalizada do PHP) é o preferido.

Foi útil?

Solução

Se eu entendo correto, você deseja acionar um erro quando um built-in função PHP é usada? Nesse caso, dê uma olhada na função Função Prioridade .

Outras dicas

trigger_error ()

function my_deprecated_function() {
    trigger_error("Deprecated function called.", E_USER_NOTICE);
    // do stuff.
}

De um modo geral você pode flag um método como obsoleto para dar aos seus usuários avisos sobre código que não funcionará em versões futuras. Acho que a melhor maneira é usar trigger_error juntamente com alguns phpdoc .

/**
 * @deprecated
 *
 * @return $this
 */
public function oldMethod()
{
    trigger_error('Method ' . __METHOD__ . ' is deprecated', E_USER_DEPRECATED);

    return $this;
}

O phpdoc @deprecated é importante porque muitas IDEs como PHPStorm reconhecê-lo e golpear o nome do método, se você tentar usá-lo, então você percebe que é obsoleto antes de realmente executar o código.

Será algo mais ou menos assim:

 JetBrains obsoleto tachado

Ao lado da phpdoc você pode ter certeza que o usuário recebe um aviso por desencadear o erro direito em tempo de execução. Apenas certifique-se de usar a constante direita (ou seja E_USER_DEPRECATED).

E_DEPRECATED em vez disso é usado internamente pelo PHP, portanto, você deve não usá-lo. Mais informações aqui .

Eu não tenho verificado isso por mim, mas descobriu isso em meus bookmarks: http://wiki.php.net/rfc/e-user-deprecated-warning

Edit: Ok isso não funcionar ainda - então ao invés de E_USER_DEPRECATED apenas usar algo como E_USER_NOTICE:

<?php
class Foo
{   
    public function __construct()
    {
        trigger_error('Use Bar instead', E_USER_NOTICE);
    }
}

$foo = new Foo()

Isso vai acabar com isso:

Notice: Use Bar instead in /home/unexist/projects/ingame/svn/foo.php on line 6

Se suas funções são parte de uma classe, então você poderia usar trigger_error no construtor para avisar da depreciação.

Como alternativa, se as funções estão em um único arquivo, em seguida, disparar um aviso depreciação no topo do arquivo iria mostrar o erro sempre que o arquivo está incluído em outro lugar.

Finalmente, você poderia jogar o erro na primeira linha de qualquer uma das funções obsoletas.

Em vez de levantar um aviso de tempo de execução em uso, você poderia considerar escrever um roteiro, que pode digitalizar sua base de código para o uso desta função, em seguida, gerar um relatório de ofender código. De vez em quando, executá-lo através.

Se você usar um sistema de controle de versão, você pode definir o script como uma submissão do gancho. Eu provavelmente recomendar um post-hook, que simplesmente envia um e-mail, quando um script, contendo funções obsoletas, é checar, mas se você realmente quer aplicá-la, você poderia ter um pré-hook impedir completamente ninguém de fazer check-in .

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