听起来可能很傻但是我已经过时/缺乏经验并且从Java编程回到php,所以我把概念搞混了。
如果在php网页中我声明了一个变量
$debug=TRUE;
并尝试在函数
中从下面访问它a(){
if ($debug){
echo "I'm here";
}
}
变量不存在或未启动?整个文件只是简单:
<?php
$debug=TRUE;
a(){
if ($debug){
echo "I'm here";
}
}
?>
我是否需要创建会话变量或其他内容?我很无能为力同样的概念使我对其中的其他变量的使用感到困惑。另外,为了进一步使用变量,我试图强制将我需要的所有变量传递给我使用它们的函数,并且像Java一样的类概念也许会更干净但是对于这种简单来说太过分了。 。或者我需要将函数(它是一个表单处理器)声明为类?
我知道这很愚蠢,但我浏览了谷歌和论坛,问题似乎是如此明显和简单,以至于很难找到针对此的网页或条目(或者我可能会问错误的问题)。 / p>
答案 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)