1

基本的に私はページにたくさんのリンクを持っています、そして私はこのようなものを使います

<?PHP echo $SITE_PATH ?>

同じページに何度も表示されますが、PHPで通知が表示されます。

isset()のようなものを使用することになっていることは知っていますが、呼び出すたびに本当に使用する必要がありますか?

<?PHP echo $SITE_PATH ?>

---編集:
定義された変数の使用に切り替えると、通知が消えるように見えます

4

4 に答える 4

9

ここに2つの解決策があります:

  • 存在する変数のみを使用してください-これはおそらくあなたがすべきことです。
  • または、それらを使用する前に、それらが(でisset存在するかどうかをテストします。

魔法はありません^^

アプリケーションで未設定の変数が多数使用されている場合は、設計に問題がある可能性があります。


あなたが提示したような場合、頻繁に使用される変数については、それが存在することを確認し、存在しない場合は、たとえば、スクリプトの最初で''に設定します。

これは実際には見栄えがよくありませんが、機能します。このように、アプリケーション全体を調べてすべてにパッチを適用する必要はありません。

(または、レベルを無効にすることもできE_NOTICE error_reportingます-そのアイデアは好きではありませんが、コードベースを処理する唯一の方法である場合があります)

于 2009-12-24T19:17:08.917 に答える
4

@を使用してメッセージを抑制することができます。

print @$site_path;

または、三項演算を使用してデフォルト値を取得できます。

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

ただし、最終的には、設定されていない変数を使用するべきではありません。もしそうなら、あなたはあなたのアプローチを再考する必要があります。この情報を前もって処理して、残りのスクリプトをこのような問題なく実行できるようにします。

于 2009-12-24T19:15:25.583 に答える
1

変数を使用する前に、変数が設定されていることを確認する必要があります(特にページにエコーします)。変数が安全でないソース($ _GET、$ _ POST、データベース)からのものである場合は、セキュリティ違反を防ぐために何らかの種類のフィルタリングを実行する必要があります(クロスサイトスクリプティング(XSS)、クロスサイトリクエストフォージェリ(CSRF)など)。 。)ただし、すべてが安全であり、エラーを表示したくない場合(たとえば、本番環境で)、エラーレポートを0に設定します。

例えばerror_reporting(0);

これは、php.iniレベルまたはページごと(ページerror_reporting(0);の上部に設定)で実行できます。

ちなみに、本番環境ではエラーを表示したくありません。代わりにそれらをログに記録します。開発では、すべてのエラー(E_STRICT)を確認する必要があります。

于 2009-12-24T19:36:56.710 に答える
0

変数が設定されているかどうかを確認して返す関数を作成して、次のように返すことができます。

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

// calling it
echo EchoVar();
于 2009-12-24T19:20:18.957 に答える