gpt4 book ai didi

继承类上的 PHP new self() 正在创建基类对象

转载 作者:可可西里 更新时间:2023-10-31 23:02:22 26 4
gpt4 key购买 nike

<分区>

我有一个类作为基类。然后我有几个继承自它的其他类。我想使用静态语法开始加载继承的类,但这种行为没有多大意义。

直到现在,我都是这样加载类的,它完成了工作。

$obj = new foo();
$something = $obj->ByID(1);

我希望能够像这样调用 ByID 函数。

$something = foo::Get()->ByID(1);

上面的代码是有效的,但它不是调用继承类,而是加载基类。我想我明白为什么会这样,但这没有任何意义。在 .NET 中,“this”将始终应用于继承的对象,但在我这里它不是这样工作的。

我有一个带有以下方法的基类 bar。这不会在继承的类中被覆盖。事实上,继承的类只包含 1 个属性。

class bar
{
public $directory;
public function Get()
{
return new self();
}

public function ByID($id)
{
//get the record from the file by using $directory to find the file.
}
}

class foo extends bar
{
public $directory = "/something/";
}

我遇到的问题是,当我以静态方式加载类时,self() 返回基类的对象而不是继承类的对象。我需要继承类的 $directory 属性。继承的类当然会包含额外的功能和其他东西,但现在这是一个障碍,阻止我实现这样的代码。知道我做错了什么吗?

我不想在每个继承的类中重写 Get()。使用 laravel 我可以记住具有类似结构的模型类,您可以在其中创建一个具有 1 个属性的模型,该属性是表的名称并且不知何故一切正常。

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