一周以来,我爱上了Symfony2。我有一个反馈消息包:src/Erwine/FeedBackMessageBundle
。
我在另一个项目中添加了一些自定义类:src/Erwine/FeedBackMessageBundle/FeedBackMessage
。
所有类都具有相同的命名空间:Erwine\FeedBackMessageBundle\FeedBackMessage
。
我在不同的文件中有几个实现。让我们说:
- FeedBackMessageClassOne
- FeedBackMessageClassTwo
- FeedBackMessageClassThree
第一个人在他自己的文件中存在 。如果Two从One延伸,我就失败了。我已经尝试了use...
等等。
两个和三个人在同一个档案中作为双胞胎生活。如果Three继承自Two,那就有效 控制器中One的实例没问题。
在我看来,不同文件中同一命名空间中的类的继承并不起作用。不,不,不,当然不是,我做错了什么。不是吗?但是什么?是否在Symfony2中自动加载自定义类?
我正在使用composer作为依赖项。
更新
这是我的实施:
<?php
namespace Erwine\FeedBackMessageBundle\FeedBackMessage;
class FeedBackMessageHandlerImpl extends FeedBackMessageHandlerImplTwee
{
public function __construct()
{
//var_dump('constructed');
//parent::__construct();
}
//public function getFeedBackMessageGeneralOverride(){};
}
答案 0 :(得分:0)
如果你的自动加载设置正确,它应该是这样的:
文件夹结构:
src/
Erwine/
FeedBackMessageBundle/
FeedBackMessage/
FeedBackMessageClassOne.php
FeedBackMessageClassTwo.php
FeedBackMessageClassThree.php
<强> FeedBackMessageClassOne.php:强>
<?php
namespace Erwine\FeedBackMessageBundle\FeedBackMessage;
class FeedBackMessageClassOne
{
// Contents of class...
}
<强> FeedBackMessageClassTwo.php:强>
<?php
namespace Erwine\FeedBackMessageBundle\FeedBackMessage;
class FeedBackMessageClassTwo extends FeedBackMessageClassOne
{
// Contents of class...
}
由于文件位于同一名称空间中,因此第二个文件中的扩展不需要use
语句,因此通过在第二个类中定义相同的名称空间,您可以使用第一类没有使用声明。
确保您的自动加载设置正确。
将每个班级保存在一个单独的文件中,以及您将文件命名为与班级相同的文件,这一点非常重要。
这是因为如果您正在使用composer自动加载器,Symfony默认使用PSR-0。 Go here to read more about PSR-0