【问题标题】:How to load classes in php如何在php中加载类
【发布时间】:2016-04-03 03:14:45
【问题描述】:

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

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

不是这样的:

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

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

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

【问题讨论】:

    标签: php class namespaces autoload


    【解决方案1】:

    您应该 use 那些类(即导入它们),例如:

    use strrife\MyBundle\Entity as Entity;
    
    ...
    
    $e = new Entity();
    

    官方文档可以在here找到。

    PS

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

    编辑

    你不应该那样做。

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

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

    您还可以:

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

    但我极力劝阻你不要这样做,因为......好吧,命名空间带来了秩序和结构,你很可能最终会得到类的重新声明。

    【讨论】:

    • 感谢 Alexander 澄清了一点。我编辑了我的问题,我不够具体,对不起
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多