我希望有一个包含所有文件的课程。
例如
Loader::loadZend // loads all zend libraries
Loader::loadSymfony // loads all symfony components
如果我在方法中包含一个文件,它是否会全局可用?
似乎它不起作用。也许我做错了什么,或者有解决办法吗?
感谢
答案 0 :(得分:3)
来自http://uk.php.net/manual/en/function.include.php(强调我的)
当包含文件时,它包含的代码将继承发生包含的行的变量范围。调用文件中该行可用的任何变量将在被调用文件中可用,从那时起。但是,所包含文件中定义的所有函数和类具有全局范围。
让一个加载器加载所有类的Zend,Symfony或者其他任何东西都是个坏主意。两者都有自己的自动加载器,因此您需要做的就是在包含路径上使库可用,然后spl_autoload_register
框架自己的自动加载器。
答案 1 :(得分:2)
如果没有定义全局范围变量,那么你应该没问题。否则,全局变量将丢失。
例如,
a.php:
<?php
$a = "global a";
class c {
public $b = "member b";
}
?>
b.php
<?php
function inc() {
include 'a.php';
}
inc();
echo $a;
$class = new c;
echo $class->b;
?>
如果你运行b.php,你会发现$ a已经消失,而c类或任何功能仍然可用。
答案 2 :(得分:1)
如果你只是在另一个类中包含一个类,它只能在你插入include的类中使用 所以解决方案是创建一个自动加载器,自动包含demmand所需的类。在这里,您可以获得所需的信息:
http://php.net/manual/es/language.oop5.autoload.php
这是PHP5 OOP的基本编程。
修改
查看您对文件的查询。都不是。该文件(将通过php函数处理)只能在调用/使用它的函数内部使用,而不是在整个应用程序/网站中全局使用。