2013-01-19 31 views
0

晚上好!Symfony自动加载结构

我在使用 自动加载器访问symfony2.1.6中的自定义类时遇到了一些问题。 我需要做的是从DefaultController中访问 Mangress/src/Qkprod/Classes/api/APIEntry.php类。显然我太笨了,找不到一种方法来扩展 autoload.php来做到这一点。现在我在一个点,我一直 读这么多的相关博客文章和解决方案,我不知道了 该怎么办了......

我的文件结构如下所示:

 
Mangress 
-app 
-src 
    -Qkprod 
     -MangressBundle 
     -Controller, Entity, Resources, Tests 
     -Classes 
     -api 
      -APIEntry.php 
     -db 
     -security 
    -QkprodMangressBundle.php 
-vendor 
-web 
的类文件夹包含所有到目前为止我写的课程。

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

$装载机>添加(加载'Qkprod \ MangressBundle \ api', DIR。'/ ../src/Qkprod/MangressBundle/Classes/api /'); 虽然这似乎是错误的..

是否有什么问题,我的命名或symfony的理解? 我注册了命名空间“Qkprod \ MangressBundle \ API”到磁带自动加载 使symfony知道在哪里看的时候

使用Qkprod \ MangressBundle \ API \ APIENTRY;

所以它在我Mangress/src目录/ Qkprod/MangressBundle /班/ API查找 文件夹是我错了吗?

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

回答

1

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

甚至不只是symfony的开发者,这个结构被称为PSR-0,并被很多PHP框架所采用。

如果您仍然习惯于使用这些约定,默认的自动加载器会加载您的类,并且其他开发人员会更容易理解您的代码。当你写

use Qkprod\MangressBundle\Api\APIEntry 

它会知道去哪里找

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

这样:

只是删除你的“类”目录,并从它的水平向上移动的一切。

+0

谢谢!这就是为什么我想问..因为我有点困惑,我该怎么做,什么不是。也完全错过了这些约定。它现在终于真的工作了。我会详细介绍你的参考资料。非常感谢!现在我终于可以开始编程了;) –