2

PHPでグローバル変数を初期化するのは良い習慣ですか? コードのスニペットは正常に動作しているように見えますが、コードの 2 番目のスクラッチのように、関数の外部で変数を初期化する方がよいでしょうか (たとえば、パフォーマンス上の理由から、より大きなプロジェクトで)。

if(isset($_POST["Return"]))Validate();
function Validate(){
    (!empty($_POST["From"])&&!empty($_POST["Body"]))?Send_Email():Fuss();
};
function Send_Email(){
    global $Alert;
    $Alert="Lorem Ipsum";
    mail("","",$_POST["Body"],"From:".$_POST["From"]);
};
function Fuss(){
    global $Alert;
    $Alert="Dolor Sit"
};

function Alert(){
    global $Alert;
    if(!is_null($Alert))echo $Alert;
};

上記の変数 $Alert が初期化されていないことに注意してください。

$Alert;
if(isset($_POST["Return"]))Validate();
function Validate(){
    (!empty($_POST["From"])&&!empty($_POST["Body"]))?Send_Email():Fuss();
};
function Send_Email(){
    global $Alert;
    $Alert="Lorem Ipsum";
    mail("","",$_POST["Body"],"From:".$_POST["From"]);
};
function Fuss(){
    global $Alert;
    $Alert="Dolor Sit"
};

function Alert(){
    global $Alert;
    if(!is_null($Alert))echo $Alert;
};

今、そうであることに注意してください。

答えていただければ幸いです。前もって感謝します、ジェイ

4

6 に答える 6

4

2 番目の例では、まだ変数を宣言していません。

$alert;

$alert値を割り当てないため、未宣言のままです。

最初に変数を宣言すると、通知を生成することなく、より簡単にアクセスできます。

$alert = '';

if ($alert) {
    //do something with alert
}
于 2009-07-23T11:08:33.810 に答える
2

PHPでグローバル変数を初期化するのは良い習慣ですか?

私の意見では (そう考えているのは私だけではありません)、グローバル変数を使用しないことをお勧めします。

ここでいくつかの引数を見つけることができます。

ただし、グローバル変数を本当に使用する必要がある場合は、初期化する方がよいでしょう。またはisset、それらがあったかどうかを判断するために使用します。

于 2009-07-23T11:07:48.710 に答える
1

グローバル変数は使用しないでください。これは不適切な方法であり、PHP6 では使用できません。複数のページ/クラスで使用できる値が必要な場合は、列挙型クラスを作成してみませんか? ここで例を参照してください: http://riccardotacconi.blogspot.com/2009/05/enumerator-class-in-php.html

基本的に、クラスをインクルードし、次の方法で値を取得します: QYourClass::Alert

于 2009-07-23T14:04:46.007 に答える
1

初期化されていない変数を使用すると、php で通知がトリガーされるため、変数を初期化することは常に初期化しないよりも優れています。

于 2009-07-23T11:07:18.260 に答える
0

これは実行可能ではないと思うので、私はそれを廃棄しています。グローバル変数はPHP6と定数で削除されています。定義上、値を変更することはできません。皆さんのおかげで、それぞれの答えと貢献してくれたすべての人に感謝します。

于 2009-07-24T09:02:08.770 に答える
0

このページによると、グローバル変数は PHP6 で廃止されるのではなく、グローバル変数を登録します。グローバル変数にはさまざまな用途があり (良い方法もあれば、そうでないものもあります)、基本的に安全です。 レジスタ グローバルは重大なセキュリティの抜け穴であり、当然のことながら廃止されました。

于 2011-02-23T15:16:20.223 に答える