gpt4 book ai didi

php - 如何在父类构造函数中使用命名空间

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

我有一个名为 Service_B 的类(class)它扩展了自定义服务类。

这个自定义服务类需要一个名为 Reader 的对象。在其 __construct()以便正确实例化。

父服务定义如下

namespace Vendor\Services;

abstract class Service{

function __construct(Vendor\Services\Reader $reader){
}
}
Service_B定义如下:
namespace Vendor\Services;    

class Service_B extends Service{

function __construct(){
parent::__construct(new \Vendor\Services\Reader());
}
}
Reader在文件顶部确实有以下行:
use Vendor\Services;

类文件的组织方式如下:
Vendor/Services/Service_B.php
Vendor/Services/Reader.php

问题 :
当我实例化 Service_B 时,我收到以下错误消息:
Fatal error: Class 'Vendor\Services\Reader' not found

我不明白为什么会出现此错误,因为我认为我使用了正确的命名空间声明。谢谢

最佳答案

在您的 Reader 之上上课地点:

//This will declare the Reader class in this namespace
namespace Vendor\Services;

并删除:
//THIS IS A WRONG DIRECTIVE: you're telling PHP to use the Vendor\Services class but it doesn't even exist     
use Vendor\Services;

然后修改 Service_B类如下:
namespace Vendor\Services;    

//i think this should extend Service, as it's calling the parent constructor
class Service_B extends Service
{
function __construct(){
parent::__construct( new Reader() );
}
}

这样你所有的 3 个类都将在同一个命名空间中,而 Reader应该在没有显式命名空间前缀的情况下找到类

关于php - 如何在父类构造函数中使用命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34204795/

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