38

私が一緒に働いているチームには、コード全体で PHP の ibase_* 関数を使用してデータベースと通信する古いコードベースがあります。元の関数を呼び出すだけでなく、別のことを行うラッパーを作成し、代わりにラッパーが使用されるように、コード全体で一括検索置換を行いました。

では、今後 ibase_* 関数が使用されないようにするにはどうすればよいでしょうか?

できれば、それらを引き続き利用できるようにしたいのですが、使用すると通知または警告がスローされるようにします。

純粋な PHP でのソリューション (PHP のカスタム バージョンをコンパイルする必要がない) が推奨されます。

4

6 に答える 6

48

トリガー_エラー()

function my_deprecated_function() {
    trigger_error("Deprecated function called.", E_USER_NOTICE);
    // do stuff.
}
于 2008-10-11T14:34:58.700 に答える
17

私の理解が正しければ、組み込みの PHP 関数が使用されたときにエラーを発生させたいですか? その場合は、 Override Function関数を見てみましょう。

于 2008-10-11T15:02:27.990 に答える
6

自分で確認したことはありませんが、ブックマークでこれを見つけました: http://wiki.php.net/rfc/e-user-deprecated-warning

編集: これはまだ動作しません - E_USER_DEPRECATED の代わりに E_USER_NOTICE のようなものを使用してください:

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

$foo = new Foo()

これは次のようになります。

Notice: Use Bar instead in /home/unexist/projects/ingame/svn/foo.php on line 6
于 2008-10-11T14:30:31.517 に答える
2

関数がクラスの一部である場合、コンストラクターでtrigger_errorを使用して、非推奨であることを警告できます。

または、関数が単一のファイルにある場合、ファイルの先頭で非推奨の警告をトリガーすると、ファイルが別の場所に含まれるたびにエラーが表示されます。

最後に、非推奨の関数の最初の行でエラーをスローすることができます。

于 2008-10-11T14:35:27.513 に答える
2

使用時にランタイム警告を発生させる代わりに、コード ベースをスキャンしてこの関数の使用を確認し、問題のあるコードのレポートを生成するスクリプトを作成することを検討できます。たまには駆け抜けてください。

バージョン管理システムを使用している場合は、スクリプトをコミット フックとして設定できます。非推奨の関数を含むスクリプトがチェックインされたときにメールを送信するだけのポストフックをお勧めしますが、本当に強制したい場合は、プリフックを使用して誰もがチェックインできないようにすることができます.

于 2008-10-11T15:28:50.213 に答える