如何在 php 中加载 类
How to load classes in php
我需要了解如何在 php 中加载 classes。我想通过仅使用其名称实例化 class 来访问 classes 方法,例如:
$foo = new Foo();
$foo->method();
而不是这样:
$foo = new \Class\Bar\Foo();
我在 Symfony 2.7 环境中。
提前致谢!
编辑
我的错,我应该指定我想在整个项目中使用这样的 classes,而不仅仅是在几个文件中。
你应该 use
那些 classes(即导入它们)像:
use strrife\MyBundle\Entity as Entity;
...
$e = new Entity();
可以找到官方文档here。
PS
如果您正在使用一些 IDE(例如,我个人强烈推荐的 PHPStorm),那么,当您键入 Entity
和这个 class 尚未导入,它为您提供了一个选项列表,用于从中导入 class。
编辑
你不应该那样做。
在整个项目中像这样导入 classes 实际上是一个坏主意,因为这可能会导致命名冲突(如果你想为 Symfony 这样做,可能会发生冲突 classes ).
作为您的项目 classes 的解决方法,您可以向 composer.json
添加几行,指定所有项目文件夹的自动加载路径。
您还可以:
- 将所有实体放入一个文件夹(非常糟糕)
- 或者编写一个自定义
__autoload()
函数来遍历文件和文件夹以搜索您的 class (docs),但它会带来同样的问题和一些性能问题.
但我强烈建议您不要这样做,因为...好吧,命名空间带来秩序和结构,您很可能会以 class 重新声明告终。
我需要了解如何在 php 中加载 classes。我想通过仅使用其名称实例化 class 来访问 classes 方法,例如:
$foo = new Foo();
$foo->method();
而不是这样:
$foo = new \Class\Bar\Foo();
我在 Symfony 2.7 环境中。 提前致谢!
编辑 我的错,我应该指定我想在整个项目中使用这样的 classes,而不仅仅是在几个文件中。
你应该 use
那些 classes(即导入它们)像:
use strrife\MyBundle\Entity as Entity;
...
$e = new Entity();
可以找到官方文档here。
PS
如果您正在使用一些 IDE(例如,我个人强烈推荐的 PHPStorm),那么,当您键入 Entity
和这个 class 尚未导入,它为您提供了一个选项列表,用于从中导入 class。
编辑
你不应该那样做。
在整个项目中像这样导入 classes 实际上是一个坏主意,因为这可能会导致命名冲突(如果你想为 Symfony 这样做,可能会发生冲突 classes ).
作为您的项目 classes 的解决方法,您可以向 composer.json
添加几行,指定所有项目文件夹的自动加载路径。
您还可以:
- 将所有实体放入一个文件夹(非常糟糕)
- 或者编写一个自定义
__autoload()
函数来遍历文件和文件夹以搜索您的 class (docs),但它会带来同样的问题和一些性能问题.
但我强烈建议您不要这样做,因为...好吧,命名空间带来秩序和结构,您很可能会以 class 重新声明告终。