无法使用其他文件中的php变量

时间:2018-10-24 13:44:49

标签: php file variables

就像我的标题所说的那样,

每当我尝试使用另一个PHP文件中的变量时,它都将不起作用(未定义的变量)。 我确实在要包含的文件中声明了它们。 例如,我有一个名为 variables.php 的文件,其中包含以下文件:

<?php
$DEBUG = TRUE;
$mysqli = new mysqli("127.0.0.1", "root", "", "29185917-database");
$DEBUG_LOG_FILE = "../log";
?>

然后我有另一个名为 debug.php 的文件,该文件尝试使用变量'DEBUG',但无法访问它。这是我的debug.php文件:

<?php
require_once 'variables.php';
function echo_debug(string $message)
{
    if($DEBUG) {
        echo $message;
    }
}
?>

每当我尝试使用函数 echo_debug 时,都会出现错误消息: 未定义的变量“ DEBUG”。 感谢您提供有关此问题的任何帮助:)。

3 个答案:

答案 0 :(得分:1)

函数有其自身的作用域。可以从函数内部访问变量。

您可以将function echo_debug(string $message, bool $DEBUG) 作为参数传递

echo_debug("comment that will help me debug in dev mode", $DEBUG);

然后您将其称为

DEBUG

另一种选择是将define('DEBUG', true); $mysqli = new mysqli("127.0.0.1", "root", "", "29185917-database"); $DEBUG_LOG_FILE = "../log"; 声明为常量

function echo_debug(string $message) {
    if(DEBUG) { ... }
}

然后,在函数中检查该常数:

global

您还可以在if()上方使用global $DEBUG;关键字,尝试添加require_once 'variables.php'; function echo_debug(string $message) { global $DEBUG; if($DEBUG) { ... } }

{{1}}

但是通常其他两种解决方案更好,有时会忽略全局变量。

答案 1 :(得分:0)

根据我的评论,您还可以使用常量,完全避免变量问题。

<?php
define('DEBUG', true);
$mysqli = new mysqli("127.0.0.1", "root", "", "29185917-database");
$DEBUG_LOG_FILE = "../log";
?>

然后在函数中检查常量是否已定义

<?php    
require_once 'variables.php';    
function echo_debug(string $message) {
    if (defined('DEBUG') && DEBUG === true) {
        echo $message;
    }
}    
?>

答案 2 :(得分:-1)

这样做:

function echo_debug(string $message,$data)
{
    if($data === TRUE) {
        echo $message;
    }
}

调用功能:

require_once 'variables.php';
$message = "comment that will help me debug in dev mode";
$output = echo_debug($message,$DEBUG);
print_r($output);