gpt4 book ai didi

php - Laravel4/PHP : extending a class within different namespaced levels

转载 作者:行者123 更新时间:2023-12-04 16:56:24 24 4
gpt4 key购买 nike

当我扩展位于同一目录级别的类时,它工作正常,但是当扩展类位于横向子目录级别时,它不会。一切都是命名空间的。下面是我的目录结构和相关代码。

目录结构:

myproj\app\lib\Myproj\
|- ...
|- Abc\
|- Sublvl1\
|- Sublvl1Controller.php
|- AbcBaseController.php
|- XyzController.php

Composer .json:
"psr-0": {
MyProj\\": "app/lib"
}

我想在各个地方扩展的基类:
\app\lib\MyProj\Abc\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...

app\lib\MyProj\Abc\XyzController.php:
<?php namespace MyProj\Abc;
class XyzController extends AbcBaseController // works fine
{

app\lib\MyProj\Abc\Sublvl1\Sublvl1Controller.php:
<?php namespace MyProj\Abc\Sublvl1;

use MyProj\Abc\AbcBaseController;

class Sublvl1Controller extends AbcBaseController // does not work
{
...

AbcBaseController 在 MyProj\Abc\Sublvl1 命名空间内时不应用,即使我使用“use”语句导入它。但是,在 MyProj\Abc 命名空间内时应用了 AbcBaseController。

任何见解都非常感谢。

最佳答案

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

class Sublvl1Controller extends AbcBaseController   
{

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

//...

关于php - Laravel4/PHP : extending a class within different namespaced levels,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21029180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com