首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抽象类在php中扩展抽象类?

抽象类在php中扩展抽象类?
EN

Stack Overflow用户
提问于 2010-05-07 14:34:52
回答 2查看 4.3K关注 0票数 5

我正在处理一个简单的抽象数据库类。在使用这个类时,我希望有一些实例是独立的。我想拥有一个非单例的抽象类,然后将它扩展到另一个抽象类,即单例类。这个是可能的吗?推荐?

编辑:我想有两个抽象的,实际上是相同的,除了一个是单例。因此,唯一的区别将是,一个将拥有另一个的所有功能,但将有其他的属性和方法,使其行为像一个单例。

为此,我希望有一个基类代码库,因此在进行更改时,我不需要保持两个文件保持同步。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-07 18:24:45

在我做事的方式上,我认为抽象的独生子女是没有用的。这是因为

1)您想要成为单个实例的是您实例化的应用程序中使用的最后一个类,不管它是一个库、模型、控制器或视图,而不是抽象的。

2)加入单例方法简单,可写成8行。见下文。

代码语言:javascript
复制
protected static $_instance;
public static function getInstance()
{
    if (!isset(self::$_instance)) {
        self::$_instance = new self();
    }
    self::$_instance;
}

3)以下版本的PHP5.3不支持后期静态绑定。这将导致实例化抽象类而不是继承它的最后一个类,并且不会像Gordon和nuqqsa所提到的那样发挥预期的作用。因此,为了向后兼容性,最好避免它。

票数 3
EN

Stack Overflow用户

发布于 2010-05-07 15:13:35

单例模式的实现必须满足两个要求:

  1. 它必须提供一种机制来访问单例类实例,而不需要创建类对象
  2. ,它必须持久化该单例对象,使其不被实例化超过一次

只要提供了,变体就会是多个。如果需要的话,将类抽象从另一个抽象中扩展是没有错的。但是,正如@Gordon所说,要注意重写静态方法/属性会导致PHP < 5.3中的特殊行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2789328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档