Laravel4 / PHP:在不同的命名空间级别内扩展一个类

时间:2014-01-09 19:18:20

标签: php namespaces composer-php extend

当我扩展一个位于同一目录级别的类时,它可以正常工作,但是当扩展类存在一个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命名空间内部应用了

非常感谢任何见解。

1 个答案:

答案 0 :(得分:1)

看起来你的子类没有调用父的构造函数:

class Sublvl1Controller extends AbcBaseController   
{

    public function __construct( ) 
    {
        parent::__construct();  // You need this

    //...