gpt4 book ai didi

php - 如何只扩展一个父级?

转载 作者:行者123 更新时间:2023-12-04 14:13:12 25 4
gpt4 key购买 nike

假设我有 2 个类(class)

class BaseClass {
...
}

class SomeClass extends BaseClass {

}

现在我想创建第三个类,它只会扩展 SomeClass,但不会从 BaseClass 获取任何东西。这可能吗?

我正在使用 webdriver 编写 Selenium 测试,并希望根据 DB 或 WebServices 检查来自 Selenium 的数据,但不想加载整个框架,只加载我们的一些库

最佳答案

你不能。这不是继承的工作方式。从 SomeClass 继承的类将始终继承它的所有属性和方法,包括从 BaseClass 继承的 SomeClass 的属性和方法。您可以通过 Visibility 限制对它们的访问,但只能从 private over protected 到 public,而不是相反,例如您可以降低能见度,但不能收紧。

请参阅 PHP 手册中有关继承和可见性的章节:


另一种选择是围绕 SomeClass 的实例使用某种 Facade 来控制对 SomeClass 中可访问的属性和方法的访问,例如假设您的 SomeClass 有一个方法 foo() 并从 BaseClass 继承 bar(),您可以这样做

class LimitedAccess
{
private $instance;

public function __construct(SomeClass $someClass)
{
$this->instance = $someClass
}

public function foo()
{
return $this->instance->foo;
}
}

然后您可以通过这个 Facade 汇集所有访问,有效地阻止对 BaseClass::bar() 的访问。请注意,这不会以任何方式改变继承层次结构。它只是控制访问。

关于php - 如何只扩展一个父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13064481/

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