包含方法中的文件?

时间:2010-05-07 17:00:56

标签: php

我希望有一个包含所有文件的课程。

例如

Loader::loadZend // loads all zend libraries
Loader::loadSymfony // loads all symfony components

如果我在方法中包含一个文件,它是否会全局可用?

似乎它不起作用。

也许我做错了什么,或者有解决办法吗?

感谢

3 个答案:

答案 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函数处理)只能在调用/使用它的函数内部使用,而不是在整个应用程序/网站中全局使用。