0

他の誰かによって書かれたプロジェクトで作業しているときに、いくつかのデータを取得する関数があり、その戻り値はデータを含む配列です。

function getSomedata()
{
     //Get some data
     return Array();
}

コード上では、この関数は多くの場所でテストされています。

if(getSomedata())
  getSomedata();

コードのすべての部分を編集せずに、その関数が IF ステートメントから呼び出され、データを含む配列ではなくブール値を返す場合、phpから通知を受け取ることができますか?

4

2 に答える 2

3

理論的には、バックトレースを使用して、どのコードがコードの一部を呼び出したかを把握し、コードを読み取ってイントロスペクトして、関数がifステートメントで呼び出されたかどうかを判断できます。しかし、それはまったくの狂気なので、これを行う方法の詳細については説明しません。

if (function()) function()アンチパターン、壊れたコード、悪い、悪い、悪いです。あなたはもっと狂気でそれと戦うのではなく、この誤用を修正する必要があります。それが多くの場所で使用されている場合は、永遠に対処するのではなく、弾丸を噛んで一度修正してください。

于 2012-05-28T08:14:48.400 に答える
-1

あなたができる最善のことは、 $GLOBALS を使用して配列が設定されているかどうかを確認することだと思います。

function getSomedata()
{
    if(!empty($GLOBALS['Arr']))
        return $Arr;

    //Get some data

    return $Arr;

}

そのようなもの...スクリプトの実行中にデータが変更されていない場合は、うまくいきます。ただし、コードを修正することをお勧めします。

于 2012-05-28T08:11:00.917 に答える