1

我有 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;
    }
}

这在

索引.php

Myclass::include(PARAMS);

但是我在 params.php 中的所有变量在 index.php 中都不可见,因为它们似乎在 class.inc.php 中。

4

1 回答 1

1

include,require和朋友基本上表现得好像您已将文件的内容复制并粘贴到该位置。因此,如果您在函数中运行它们,则任何“裸”变量(如果您自己运行文件将是全局的)将成为该函数的本地变量。

一般来说,现代 PHP 代码中的答案就是不使用任何全局变量——文件应该只包含函数,或者更好的是,只包含命名空间和类,所有变量都包含在其中。

但是,如果您确实需要全局变量,则可以global在包含函数中或包含文件的顶部使用关键字。

因此,例如,如果您包含的文件定义了一个$config需要在其他地方访问的变量,那么您可以在文件的顶部编写global $config;以将其推出您include/require它时所在的任何范围。

于 2013-03-29T00:41:43.777 回答