0

晚上好!

我在使用自动加载器访问 symfony2.1.6 中的自定义类时遇到了一点问题。我需要做的是从 DefaultController 中访问 Mangress/src/Qkprod/Classes/api/APIEntry.php 类。显然我太愚蠢了,无法找到一种方法来扩展 autoload.php 来做到这一点。现在,我已经阅读了如此多的博客文章和解决方案,以至于我不再知道该做什么了……

我的文件结构如下所示:

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

到目前为止我读到的是我需要注册类的命名空间以加载到Mangress/app/autoload.php
在 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 文件夹我错了吗?

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

4

1 回答 1

1

为什么不使用symfony 开发者推荐的目录结构?

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

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

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

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

这样写的时候

use Qkprod\MangressBundle\Api\APIEntry

它会知道去哪里看。

于 2013-01-19T17:10:39.157 回答