1
当我扩展一个处于相同目录级别的类时,它可以很好地工作,但是当扩展类生活在横向子目录级别时,它不会。一切都是命名空间。下面是我的dir结构和相关的代码。Laravel4/PHP:在不同命名空间级别内扩展一个类
导演的结构:
myproj\app\lib\Myproj\
|- ...
|- Abc\
|- Sublvl1\
|- Sublvl1Controller.php
|- AbcBaseController.php
|- XyzController.php
composer.json:
"psr-0": {
MyProj\\": "app/lib"
}
,我想在不同的地方扩展基类: \程序\ LIB \的Myproj \美国广播公司\ AbcBaseController.php :
3210应用程序\ LIB \的Myproj \美国广播公司\ XyzController.php:
<?php namespace MyProj\Abc;
class XyzController extends AbcBaseController // works fine
{
应用程序\ LIB \的Myproj \美国广播公司\ Sublvl1 \ Sublvl1Controller.php:
<?php namespace MyProj\Abc\Sublvl1;
use MyProj\Abc\AbcBaseController;
class Sublvl1Controller extends AbcBaseController // does not work
{
...
时的Myproj \美国广播公司\ Sublvl1命名空间里,不应用AbcBaseController,即使我将其导入“使用“声明。但是,AbcBaseController 是当在MyProj \ Abc命名空间中时应用。
任何有识之士非常感谢。
你对Sublvl1Controller构造?如果是这样,你是否调用'parent :: __ construct()'? –
这样做,谢谢。是的构造函数在那里,但它没有调用parent :: __构造。为什么在同一个目录中不需要Xyz类? – Bluesail20
这将是必要的,如果它有一个构造函数,我的猜测是它没有。它的一个奇怪的PHP子类构造函数不会自动调用父构造函数。如果一个子类没有构造函数,那么创建一个新对象会隐式地再次调用parent :: __构造 –