包含文件时的Var可见性

时间:2016-06-02 13:54:40

标签: php

如何在包含某些文件时使变量可见。例如:

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 内的许多不同函数中

2 个答案:

答案 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上更深入地了解全球状态的问题。