这很难解释,但请光临我,
我有2个文件, class.inc.php和index.php
class.inc.php包含Myclass和少数函数,index.php文件从class.inc.php吐出函数
现在我需要创建一个包含/需要文件的函数,该函数实际上应该要求index.php中的文件不在class.inc.php中。
是的我知道我可以将我的文件放在一个函数中并以这种方式调用它,但我们必须将它保存在文件中,因为将来会有一些MVC覆盖。如果可能的话,我不想直接在index.php中包含文件。有没有办法做到这一点?
在我的index.php中我应该能够做到这一点
Myclass::include(PARAMS);
并且应该包含位于其他地方的文件名params.php。
我在class.inc.php
中尝试过这个abstract class Myclass {
static function load($filename){
require_once $filename;
}
}
并在
中的index.php
Myclass::include(PARAMS);
但是params.php的变量都没有在index.php中可见,因为它们似乎在class.inc.php中
我希望你理解我的意思。
答案 0 :(得分:1)
include
,require
和朋友基本上就像您已将文件内容复制并粘贴到该位置一样。因此,如果您在函数中运行它们,那么任何“裸”变量(如果您自己运行该文件将是全局变量)将是该函数的本地变量。
一般来说,现代PHP代码中的答案就是不使用任何全局变量 - 文件应该只包含函数,或者更好的是,只包含名称空间和类,所有变量都包含在那些中。
但是,如果确实需要全局变量,则可以在include函数中或所包含文件的顶部使用global
关键字。
因此,例如,如果您的包含文件定义了需要在别处访问的变量$config
,则可以在文件顶部写global $config;
以将其推出您所在的任何范围当你include
/ require
时。