基本的PHP问题

时间:2011-02-23 19:51:55

标签: php

当我使用此函数时,由包含的脚本创建的变量将保留在此函数的范围内。

function reqscript($script)
{
    $include_dir = 'inc/';
    $page_ext = '.php';
    include($include_dir.$script.$page_ext);
}

有没有办法让我不必使用以下方法?

include(buildfilename('...'));

3 个答案:

答案 0 :(得分:1)

如果要在包含的文件中定义一些变量,则必须使用$GLOBALS

例如:$foobar = 42;应为$GLOBALS['foobar'] = 42;

因此$foobar在全局范围内(在函数之外)可用。

但我更喜欢buildfilename()方法。

答案 1 :(得分:0)

你的答案已经在php.net上了,请在你所包含文件的末尾使用return。

http://php.net/manual/en/function.include.php

示例#5:

return.php

<?php

$var = 'PHP';

return $var;

?>

noreturn.php

<?php

$var = 'PHP';

?>

testreturns.php

<?php

$foo = include 'return.php';

echo $foo; // prints 'PHP'

$bar = include 'noreturn.php';

echo $bar; // prints 1

?>

答案 2 :(得分:0)

我建议您采用代码来使用buildfilename()方法,就像Floem建议的那样。但是,如果您不能或不希望这样做,这里有一个简单的包装器将变量导入全局命名空间:

class Req {
    public function __construct($src) {
        include($src);
        foreach (get_object_vars($this) as $name => $value) {
            $_GLOBALS[$name] = $value;
        }
    }
}

function reqscript($script) {
    $include_dir = 'inc/';
    $page_ext = '.php';
    new Req($include_dir . $script . $page_ext);
}