`

PHP单例模式面试注意事项

阅读更多

最近面了不少PHP从业者,有实习生也有5/6年以上的开发者,对于1年以上的从业者我都要求他们来实现一个单例类,通过这个问题评测了不少从业者水平

 

一般都要求写一个单例模式的类实现,此处有几处考察的点:

  1. 单例的基本构建代码
  2. __clone 如何规避克隆问题
  3. 深浅复制的问题
  4. 代码规范问题
// php的__clone()方法对一个对象实例进行的浅复制,对象内的基本数值类型进行的是传值复制,而对象内的对象型成员变量,如果不重写__clone方法,显式的clone这个对象成员变量的话,这个成员变量就是传引用复制,而不是生成一个新的对象.

    class Account {
        public $balance;
        
        public function __construct($balance) {
            $this->balance = $balance;
        }
    }
 
    class Person {
        private $id;
        private $name;
        private $age;
        public $account;
        
        public function __construct($name, $age, Account $account) {
            $this->name = $name;
            $this->age = $age;
            $this->account = $account;
        }
        
        public function setId($id) {
            $this->id = $id;
        }
        
        public function __clone() {    #复制方法,可在里面定义再clone是进行的操作
            $this->id = 0;
            $this->account = clone $this->account;    #不加这一句,account在clone是会只被复制引用,其中一个account的balance被修改另一个也同样会被修改
        }
    }
    
    $person = new Person("peter", 15, new Account(1000));
    $person->setId(1);
    $person2 = clone $person;
    
    $person2->account->balance = 250;
    
    var_dump($person, $person2);

 

 

 

分享到:
评论

相关推荐

    php单例模式实例

    在PHP编程中,单例模式是一种非常常用的设计模式,它保证了一个类只有一个实例,并提供一个全局访问点。这种模式在管理共享资源、数据库连接、缓存处理等场景中尤其适用,因为它可以避免频繁创建和销毁对象带来的...

    php单例模式和工厂模式

    【PHP 单例模式】 单例模式是一种设计模式,它保证了一个类只有一个实例,并提供一个全局访问点。这种模式在 PHP 中尤其适用于控制共享资源,例如数据库连接、缓存服务或者配置对象,确保在整个应用程序中这些资源...

    单例模式PHP实现代码类.zip

    在PHP中,单例模式通常用于管理共享资源,如数据库连接、缓存系统或日志记录,因为这些场景下,创建多个实例可能会导致不必要的开销和资源竞争。 下面详细阐述单例模式的原理及其PHP实现: 1. **单例模式的基本...

    PHP单例模式

    **PHP单例模式详解** 单例模式是一种设计模式,它在软件工程中被广泛使用,尤其是在PHP编程中。单例模式的主要目的是控制类的实例化过程,确保在整个应用程序中,对于某个类,只存在一个单一的实例。这种模式在资源...

    PHP 单例模式解析和实战

    **PHP 单例模式解析与实战** 在 PHP 开发中,单例模式是一种常见的设计模式,它限制一个类只能有一个实例。这样的设计模式在管理共享资源、控制对象生命周期或者在整个应用中保持一致状态时非常有用。本文将深入...

    为什么要使用PHP单例模式及应用实例.docx

    4. **注意PHP的解释机制**:由于PHP的解释执行机制,每个页面执行结束后所有的资源都会被释放,这意味着即使使用了单例模式,每次页面请求仍然会创建新的实例。因此,单例模式在PHP中的应用需要结合实际情况考虑。 ...

    php使用单例模式实现mysql类.zip

    在PHP编程中,单例模式是一种常见的设计模式,它确保一个类只有一个实例,并提供一个全局访问点。在数据库操作中,特别是在MySQL交互时,使用单例模式可以有效地管理数据库连接,避免频繁创建和关闭连接,从而提高...

    php使用单例模式实现mysql类

    一个php使用单例模式实现mysql类,封装mysql操作类,包括连接功能,及查询功能,封装getAll,getRow,getOne,afftect_rows()方法。

    PHP单例模式访问数据库

    PHP中的单例模式是一种非常重要的设计模式,其主要目的是限制类的实例化过程,确保一个类在整个程序中只有一个实例存在。这在处理全局资源,如数据库连接时尤其有用,因为它可以避免创建多个数据库连接,浪费系统...

    设计模式之PHP项目应用——单例模式设计Memcache和Redis操作类源码

    1)程序功能:单例模式设计Memcache和Redis操作类,采用PHP编写。 2)程序详解地址:http://blog.csdn.net/clevercode/article/details/46410055。 3)原创作品,出自"CleverCode的博客",分类为《设计模式之PHP项目...

    php+mysql+jqury+ajax+mvc+单例模式事例

    在IT领域,PHP、MySQL、jQuery、Ajax以及MVC(Model-View-Controller)和单例模式是构建Web应用程序的核心技术。以下是对这些知识点的详细解释: PHP是一种广泛使用的开源服务器端脚本语言,尤其适合于Web开发。它...

    工厂模式与单例模式

    在软件设计模式中,工厂模式和单例模式是两种非常基础且重要的模式,它们都是用于解决对象创建问题,但有着不同的设计理念和应用场景。本篇文章将深入探讨这两种模式,并结合具体的代码示例`myFactoryDemo`进行讲解...

    php基于单例模式编写PDO类

    引入了单例模式来保证在全局调用中不会重复实例化这个类,降低系统资源的浪费,一个对象...php的应用主要在于数据库应用, 所以一个应用中会存在大量的数据库操作, 使用单例模式, 则可以避免大量的new 操作消耗的资源。

    PHP5设计模式-单例模式

    **PHP5设计模式 - 单例模式** 单例模式是一种常用的设计模式,它在软件工程中扮演着控制类实例化过程的角色,确保一个类只有一个实例,并提供全局访问点。这种模式在PHP中尤其常见,特别是在需要频繁实例化然后销毁...

    PHP单例设计模式,连接多数据库源码

    单例模式的三个特点 1: 一个类只能有一个实例 2: 它保修自行创建这个实例 3: 必须自行向整个系统提供这个实例. 单例模式中主要的角色 Singleton定义一个Instance操作,允许客户访问它唯一的实例. Instance是一个类...

    php基于单例模式封装mysql类.zip

    介绍了php基于单例模式封装mysql类,结合完整实例形式分析了php使用单例模式封装的mysql类定义与使用方法 掌握满足单例模式的必要条件 (1)私有的构造方法-为了防止在类外使用new关键字实例化...

    php基于单例模式封装mysql类

    介绍了php基于单例模式封装mysql类,结合完整实例形式分析了php使用单例模式封装的mysql类定义与使用方法 掌握满足单例模式的必要条件 (1)私有的构造方法-为了防止在类外使用new关键字实例化对象 (2)私有的成员属性...

    单例模式分享-吴昌良

    ### 单例模式详解 #### 一、单例模式的核心概念及作用 单例模式(Singleton Pattern)是一种常用的软件设计模式,在PHP等编程语言中有着广泛的应用。此模式的核心在于确保一个类仅有一个实例,并提供一个全局访问...

Global site tag (gtag.js) - Google Analytics