php变量的有效性

时间:2012-08-20 00:12:51

标签: php variables

听起来可能很傻但是我已经过时/缺乏经验并且从Java编程回到php,所以我把概念搞混了。

如果在php网页中我声明了一个变量

$debug=TRUE;

并尝试在函数

中从下面访问它
a(){
    if ($debug){
    echo "I'm here";
    }
}

变量不存在或未启动?整个文件只是简单:

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

我是否需要创建会话变量或其他内容?我很无能为力同样的概念使我对其中的其他变量的使用感到困惑。另外,为了进一步使用变量,我试图强制将我需要的所有变量传递给我使用它们的函数,并且像Java一样的类概念也许会更干净但是对于这种简单来说太过分了。 。或者我需要将函数(它是一个表单处理器)声明为类?

我知道这很愚蠢,但我浏览了谷歌和论坛,问题似乎是如此明显和简单,以至于很难找到针对此的网页或条目(或者我可能会问错误的问题)。 / p>

4 个答案:

答案 0 :(得分: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) {
        ...
    }
}

你必须创建一个单例类,它扩展StdClass()以获得隐式 - &gt; get和 - &gt;设置方法。

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

答案 1 :(得分:1)

你想要这样的东西:

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

a($debug);//outputs "I'm here"
?>

答案 2 :(得分:1)

这里的一些事情a(){}未被定义为函数

function a(){

}  

接下来,除非您绝对需要,否则不应尝试使用全局变量。但是,你可以

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

然后只要你想检查就调用一个()。

我必须说我不认为这是你尝试调试的一个很好的做法。

答案 3 :(得分:1)

将变量传递给函数,如下所示:

$debug = true;
function a($debug) {
    var_dump($debug);
}
a($debug);
// Outputs bool(true)