我有一个函数在PHP中:PHP include_once产生全球性的影响
function importSomething(){
include_once('something.php');
}
我如何使它SOT该include_once
有一个全球性的影响?导入的所有内容都将包含在全局范围内?
我有一个函数在PHP中:PHP include_once产生全球性的影响
function importSomething(){
include_once('something.php');
}
我如何使它SOT该include_once
有一个全球性的影响?导入的所有内容都将包含在全局范围内?
可以返回所有的变量,像这样的文件中...
function importSomething(){
return include_once 'something.php';
}
只要something.php
看起来像......
<?php
return array(
'abc',
'def'
);
,你可以分配到一个全局变量。 ..
$global = importSomething();
echo $global[0];
如果你想变得非常疯狂,你可以extract()
所有th把数组成员放到范围中(在你的情况下是全局的)。
include()
和朋友是范围限制的。除非将调用移出函数的作用域,否则不能更改包含的内容适用的作用域。
我想一个解决方法是从你的函数返回的文件名来代替,并把它传递其结果include_once()
...
function importSomething() {
return 'something.php';
}
include_once(importSomething());
它看起来并不漂亮,你只能返回一次一个(除非您返回一组文件名,循环访问并每次调用include_once()
),但范围界定是该语言构造的一个问题。
从包含文件引入的所有变量都会继承包含行的当前变量范围。尽管如此,类和函数仍具有全局范围,但取决于您的导入。
如果你希望普通变量定义为自动远距传送到全球范围内,你也可以尝试:
function importSomething(){
include_once('something.php');
$GLOBALS += get_defined_vars();
}
但是,如果它真的只是一个单独的配置数组,我也会选择更明确和可重用的方法return
。
我知道这个答案是真的迟到了该用户,但是这是我的解决方案:
自己的函数中,简单地宣布任何你需要ovewrite为全球的增值经销商的。
例子:
需要有$ GLOBALS [ '文本']设置为 “yes”:指数
内容。PHP:setup.php的
function setText()
{
global $text;
include("setup.php");
}
setText();
echo 'the value of $text is "'.$text.'"'; // output: the value of $text is "yes"
内容:
$text = "yes";
的解决方案是类似马里奥的,但是,只有明确地在全球宣布的增值经销商将被覆盖。
*“一切重要”*比如说什么? – deceze 2011-05-10 01:46:31
FML。假设要导入。 – Pwnna 2011-05-10 01:49:36
请不要把你的生活视为理所当然。这只是一个错字。生活中有比这更糟糕的事情。例如,意外丢失文件。或者一个肢体。 – BoltClock 2011-05-10 01:50:56