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 :: __構造 –