如何在php

时间:2015-12-29 08:51:58

标签: php class namespaces autoload

我需要了解如何在php中加载类。我想通过仅使用其名称实例化类来访问类方法,例如:

$foo = new Foo();
$foo->method();

而不是这样:

$foo = new \Class\Bar\Foo();

我在Symfony 2.7环境中。 提前谢谢!

修改 我的坏,我应该指定我想在整个项目中使用这样的类,而不仅仅是在几个文件中。

1 个答案:

答案 0 :(得分:1)

你应该use这些类(即导入它们),如:

use strrife\MyBundle\Entity as Entity;

...

$e = new Entity();

官方文档可以找到here

PS

如果您正在使用某些IDE(例如,我强烈推荐的PHPStorm),那么当您键入Entity并且此类尚未导入时,它会为您提供一个导入选项列表那个班来自。

修改

你不应该这样做。

在整个项目中导入这样的类实际上是一个坏主意,因为这可能会导致命名冲突(如果您想为Symfony类执行此操作,可能会这样做。)

作为项目类的变通方法,您可以向composer.json添加几行,指定所有项目文件夹的自动加载路径。

你也可以:

  • 将您的所有实体放入一个文件夹(非常糟糕)
  • 或编写一个自定义__autoload()函数,该函数将遍历搜索您的类(docs)的文件和文件夹,但它会带来相同的问题+一些性能问题。

但是我强烈反对你这样做,因为......好吧,命名空间会带来秩序和结构,你最终可能会重新进行课程重新声明。