如何在包含某些文件时使变量可见。例如:
code.php:
<?php
global $var; $var = "green";
?>
的index.php:
<?php
include("code.php");
Function index(){
echo "The apple is $var";
}
?>
请注意,在 code.php 中有很多全局变量(~150个变量),所有变量都用在 index.php 内的许多不同函数中
答案 0 :(得分:1)
这是与变量范围有关的问题,而且您不需要将$var
定义为全局。
当你包含一个文件时,你可以想象它只是将另一个文件的内容复制粘贴到当前文件中。
E.g。
<强> code.php 强>
$includedName = 'Tom';
<强>的index.php 强>
include 'code.php';
function sayHello($name)
{
echo 'Hello ' . $name;
}
sayHello($includedName); // Hello Tom
答案 1 :(得分:0)
您已经提到过您正在使用遗留代码,因此为了保持一致性,可能值得保留全局变量的使用 - 尽管使用全局变量通常被认为是非常糟糕的做法,我通常认为使用全局变量不一致。
要中断函数范围并从全局范围中提取变量,必须从函数中调用global
关键字:
<?php
$var = "green";
Function index(){
global $var;
echo "The apple is $var";
}
?>
This answer总结了为什么global
变量被视为不良做法:
没有迹象表明此功能有任何副作用,但它 确实。一些功能保持不变,这很容易变得混乱 修改并要求一些全球状态。你想要的功能 无国籍人,只对他们的输入行动并返回定义的输出, 但很多时候你打电话给他们。
然而,在这个具体的例子中,你没有修改$var
的状态 - 只读它。所以问题很少。
可以在Programmers.SE上更深入地了解全球状态的问题。