5

このスレッドをフォローする:ライブラリでの関数の非推奨を処理する方法は?非推奨の関数へのすべての呼び出しを追跡する方法を見つけて、関数が削除される前にすべてが置き換えられることを確認したいと思います。次のPHPメソッドが与えられます

/*
   @deprecated - just use getBar()
*/
function getFoo(){
    return getBar();
}

function getBar(){
    return "bar";
}

次のような方法を思いついたので、フィードバックを求めています。

function getFoo(){
    try{
        throw new Exception("Deprecated function used"); 
    } catch(Exception $e){
         //Log the Exception with stack trace
         ....
         // return value as normal
         return getBar();
    }
}
4

2 に答える 2

4

PHPの内部で非推奨となった関数の場合は、E_STRICTをerror_reportingに追加するだけです。

非推奨の関数に関する通知または警告を発生させるユーザーランド関数の場合、アノテーションを追加するのに時間をかけた開発者は、 E_USER_DEPRECATED警告@deprecatedもトリガーすることをお勧めします。

function getFoo(){
    trigger_error(__FUNCTION__ . 'is deprecated', E_USER_DEPRECATED );
    return getBar();
}

利用可能なQAツールのいずれかが、コードに非推奨のメソッド呼び出しが含まれているかどうかを自動的に検出できるかどうかはわかりません。しかし、それらはあなたの最善の策です。

100%のコードカバレッジでTDDを使用している場合は、非推奨のメソッドや関数を削除することを心配する必要はありません。自動テストは単に失敗し、どこを見ればよいかがわかります。

于 2010-01-06T16:52:39.707 に答える
1

非推奨の関数が実際に呼び出されることに依存するのは危険です。何も見逃さないように、100%のコードカバレッジが必要です。非推奨の関数へのすべての呼び出しをゆっくりと見つけて、それらを1つずつ置き換えることは問題ありませんが、完全な移行には十分ではありません。

私は思うFile>Search in Files

私が知っているPHP用の優れたリファクタリングツールはないので、IDEでの最善の策です。

後付け:たぶんPhpXRefが解決策です。

于 2010-01-06T16:50:13.997 に答える