每当我尝试使用另一个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”。 感谢您提供有关此问题的任何帮助:)。
答案 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);