当我扩展一个位于同一目录级别的类时,它可以正常工作,但是当扩展类存在一个lateral-sub目录级别时,它不会。一切都是命名空间。下面是我的dir结构和相关代码。
Dir Struct:
myproj\app\lib\Myproj\
|- ...
|- Abc\
|- Sublvl1\
|- Sublvl1Controller.php
|- AbcBaseController.php
|- XyzController.php
composer.json:
"psr-0": {
MyProj\\": "app/lib"
}
我想在不同的地方扩展的基类: \应用\ lib中\的Myproj \美国广播公司\ AbcBaseController.php:
<?php namespace MyProj\Abc;
class AbcBaseController extends \BaseController
{
public function __construct()
{ dd('inside AbcBaseController'); // testing that the class is being applied when extended...
应用\ 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 \ Abc \ Sublvl1命名空间内部不应用AbcBaseController,即使我使用&#34; use&#34;声明。但是,在MyProj \ Abc命名空间内部应用了 。
非常感谢任何见解。
答案 0 :(得分:1)
看起来你的子类没有调用父的构造函数:
class Sublvl1Controller extends AbcBaseController
{
public function __construct( )
{
parent::__construct(); // You need this
//...