【问题标题】:Symfony autoloading structureSymfony 自动加载结构
【发布时间】:2013-01-03 04:45:13
【问题描述】:

晚上好!

我在 symfony2.1.6 中使用 自动装载机。 我需要做的是访问 Mangress/src/Qkprod/Classes/api/APIEntry.php 类从里面 默认控制器。显然我太愚蠢了,找不到扩展的方法 autoload.php 来做到这一点。现在我处于我曾经去过的地方 阅读了很多我不知道的博文和解决方案 怎么办……

我的文件结构如下:

芒果 -应用程序 -src -Qkprod -MangressBundle -控制器、实体、资源、测试 -课程 -api -APIEntry.php -D b -安全 -QkprodMangressBundle.php -小贩 -网络 Classes 文件夹包含我迄今为止编写的所有类。

到目前为止,我读到的是我需要注册的命名空间 Mangress/app/autoload.php
Autoloading a class in Symfony 2.1

中要加载的类

$loader->add('Qkprod\MangressBundle\api', DIR.'/../src/Qkprod/MangressBundle/Classes/api/'); 虽然这似乎是错误的..

我对 symfony 的命名或理解有问题吗? 我将命名空间 "Qkprod\MangressBundle\api" 注册到自动加载器 这样 symfony 就知道什么时候去哪里了

使用 Qkprod\MangressBundle\api\APIEntry;

所以它必须查看我的 Mangress/src/Qkprod/MangressBundle/Classes/api 文件夹我错了吗?

我真的很感激一些指导:)

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    你为什么不使用 symfony 开发者推荐的directory structure

    不仅是 symfony 开发人员,这种结构称为PSR-0,并被许多 PHP 框架采用。

    如果您遵守约定,默认的自动加载器会很好地加载您的类,其他开发人员会更容易理解您的代码。

    只需删除您的“Classes”目录,然后将其中的所有内容向上移动:

    Mangress
     -app
     -src
        -Qkprod
          -MangressBundle
            -Controller, Entity, Resources, Tests
            -Api
              -APIEntry.php
            -Db
             -security
            -QkprodMangressBundle.php
     -vendor
     -web
    

    这样写的时候

    use Qkprod\MangressBundle\Api\APIEntry
    

    它会知道去哪里找。

    【讨论】:

    • 谢谢!这就是为什么我想问..因为我有点困惑我应该做什么,不应该做什么。也完全错过了这些约定。它现在终于真正起作用了。我会详细研究你的参考资料。非常感谢!现在我终于可以开始编程了;)
    猜你喜欢
    • 2014-05-26
    • 1970-01-01
    • 2012-10-07
    • 2018-04-18
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多