如何只延长一名父母? - php

假设我有2节课

class BaseClass {
   ...
}

class SomeClass extends BaseClass {

}

现在我想创建第三类,该类只会扩展SomeClass,而不会从BaseClass得到任何东西。那有可能吗?

我正在使用WebDriver编写Selenium测试,并想针对数据库或WebServices检查Selenium中的数据,但不想加载整个框架,只是我们的一些库

参考方案

你不能继承不是这样的。从SomeClass继承的类将始终继承其所有属性和方法,包括从BaseClass继承的SomeClass的属性和方法。您可以通过“可见性”限制对它们的访问,但是只能从受保护的私有对象到公共对象,而不能相反,例如您可以降低可见度,但不能使其变紧。

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

http://php.net/manual/en/language.oop5.inheritance.php
http://php.net/manual/en/language.oop5.visibility.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:为什么不能扩展多个类? - php

当我想扩展两个父类时遇到了一种情况,但是php不允许这样做。为什么我不能extend多于一个班级,却可以implement多于一个interface。扩展许多类怎么了?在我看来,直到我解析错误之前,这似乎是一件很明显的事情。这是不好的做法吗?如果是这样,有哪些替代方案?可以使用其他语言吗? 参考方案 为什么在某些/大多数编程语言中禁止多重继承与钻石问题htt…

PHP OOP:为域实体提供“身份” - php

这里有点抽象的问题。我正在尝试使用“域模型”模式,并用依赖项来限制其他麻烦-我需要一些有关生成用于Identity Map的Identity的建议。在我见过的有关Data Mapper模式的大多数示例中(包括本书中概述的一个示例:http://apress.com/book/view/9781590599099),用户似乎使用setter来手动设置给定Dom…

PHP OOP概念付诸实践 - php

目前,我所拥有的是一份以程序庄园形式编写的审查表。我想更改一些内容,并希望在此过程中,根据过去的经验,在OOP中,网站的整个审核部分会更好。数据流如下:HTML表单=>提交=> jQuery验证=>? => PHP验证=>添加记录我的问题是要了解将POST数据传递给类的正确方法是使用AJAX / jQuery或使用具有标准感谢页…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-如何获取类的成员函数列表? - php

如果我知道班级的名字。有没有办法知道类的成员函数列表? 参考方案 get_class_methods()是你的朋友