-2

ばかげているように聞こえるかもしれませんが、私はphpが古く、経験が浅く、Javaプログラミングからphpに戻ってきたので、概念を混同しています。

PHP Webページで、変数を宣言する場合

$debug=TRUE;

関数内で下からアクセスしてみてください

a(){
    if ($debug){
    echo "I'm here";
    }
}

変数が存在しないか、開始されていませんか?ファイル全体は単純です。

<?php
$debug=TRUE;
a(){
    if ($debug){
        echo "I'm here";
    }
}
?>

セッション変数などを作成する必要がありますか?私はまったく無知で、同じ概念が他の変数の使用について私を混乱させています。また、変数をさらに使用するために、必要なすべての変数を、それらを使用する関数に転送するように強制しようとしています。Javaのようなクラスの概念は、おそらくよりクリーンですが、この単純さには多すぎます。 。または、関数(フォームプロセッサ)をクラスとして宣言する必要がありますか?

これはばかげていることは知っていますが、Googleとフォーラムを調べたところ、問題は非常に明白で単純なため、これを対象とするWebページやエントリを見つけるのは難しいようです(または間違った質問をしている可能性があります)。

4

4 に答える 4

3

http://php.net/manual/en/language.variables.scope.php

<?php
$debug = TRUE;

function a() {
    global $debug;
    if($debug === TRUE) {
         echo "I'm here....\n"
    }
}

より良いのは、グローバルを使用する代わりに、それをパラメーターとして渡すことができることです。

<?php
$debug = TRUE;

function a($debug = TRUE) {
  if($debug === TRUE) ....
}    

$_GLOBALS配列を使用することもできます。

<?php
$debug = TRUE;

function a() {
   if($_GLOBALS['debug'] === TRUE) ...
}

常にスコープ内にある定数を使用できます。

<?php
define('DEBUG', TRUE);

function a() {
  if(DEBUG === TRUE) ...
}

シングルトンを使用することもできます。

function a() {
    if(SingletonClass::get_instance()->debug === TRUE) {
        ...
    }
}

暗黙の->getおよび->setメソッドを取得するには、StdClass()を拡張するシングルトンクラスを作成する必要があります。

http://www.talkphp.com/advanced-php-programming/1304-how-use-singleton-design-pattern.html

于 2012-08-20T00:21:22.157 に答える
2

あなたはこのようなものが欲しかったですか:

<?php
$debug=TRUE;
function a($debug){
  if ($debug){
    echo "I'm here";
  }
}

a($debug);//outputs "I'm here"
?>
于 2012-08-20T00:16:54.807 に答える
2

ここでのいくつかのことa(){}は関数として定義されていません

function a(){

}  

次に、絶対に必要でない限り、グローバルを使用しようとしないでください。しかし、あなたはできます

$debug = TRUE;
function a(){
global $debug;
if($debug)
{
echo "it is";
}
}  

次に、チェックしたいときはいつでもa()を呼び出します。

私は、これがあなたがデバッグしようとしている方法の良い習慣ではないと思うと言わなければなりません。

于 2012-08-20T00:24:42.447 に答える
1

次のように、変数を関数に渡します。

$debug = true;
function a($debug) {
    var_dump($debug);
}
a($debug);
// Outputs bool(true)
于 2012-08-20T00:47:03.430 に答える