首页 > php教程 > php手册 > 正文

PHP单例模式学习笔记

php中文网
发布: 2016-05-25 16:47:38
原创
1274人浏览过

为了达到这种目的,必须保证整个项目有且只有一个实例存在并提供一个访问点供全局访问.这就需要通过调用此类的一个共用静态方法来访问这个实例,也就是说此类不能在类外面去实例化,只能在类内部实例,而且是只能通过共用的静态方法调用实例;

最近在看php高级程序设计、模式、框架与测试一书,颇有感悟,与大家分享:

在做项目时,通常我们希望某些类实例一次就够了,比如共用配置类,模板操作类,数据库连接等等,这些类因为在整个项目开发中是通用的,如果实例多次实例就会占用资源.

为了达到这种目的,必须保证整个项目有且只有一个实例存在并提供一个访问点供全局访问.这就需要通过调用此类的一个共用静态方法来访问这个实例,也就是说此类不能在类外面去实例化,只能在类内部实例,而且是只能通过共用的静态方法调用实例;

那么怎么保证此类不能在外面实例化呢?需要此单例类必须拥有一个构造函数__construct,且设置为private(因为已经有__construct,不考虑默认的构造方法:直接用类名的方法的情况),这样就保证了不会在外面直接实例化!同时还需要声明一个静态方法变量来保存此类的实例,一个共用的静态方法来访问此实例,(因为要共用,所以声明为静态的,存放内存中的共用代码区部分).还需要创建一个空的私有的__clone()方法,以防止被克隆.

立即学习PHP免费学习笔记(深入)”;

一个很典型的单例类如下:

启科网络PHP商城系统
启科网络PHP商城系统

启科网络商城系统由启科网络技术开发团队完全自主开发,使用国内最流行高效的PHP程序语言,并用小巧的MySql作为数据库服务器,并且使用Smarty引擎来分离网站程序与前端设计代码,让建立的网站可以自由制作个性化的页面。 系统使用标签作为数据调用格式,网站前台开发人员只要简单学习系统标签功能和使用方法,将标签设置在制作的HTML模板中进行对网站数据、内容、信息等的调用,即可建设出美观、个性的网站。

启科网络PHP商城系统 0
查看详情 启科网络PHP商城系统

实例代码如下:

<?php
class Simple {
    /** 
     * 单例类实例
     *
     * @static
     * @var object Simple
     */
    public static $_instance;
    //其他成员变量
    
    /** 
     * 构造方法
     *
     * @return void
     */
    private function __construct() {
        //写构造方法
        
    }
    /** 
     * 单例模式调用方法
     *
     * @static
     * @return object Template
     */
    public static function getInstance() {
        if (!self::$_instance instanceof self) self::$_instance = new self();
        return self::$_instance;
    }
    /** 
     * 声明一个空的私有克隆方法
     *
     */
    private function __clone() {
    }
    //其他方法
    
}
//调用方式
$Simple = Simple::getInstance();
?>
登录后复制

上面用到了 instanceof关键字,为比较操作符,返回布尔能够判断某个对象实例是否为制定的类型,或者是否从某个类继承,或者是否实现了某个特定接口


教程网址:

欢迎收藏∩_∩但请保留本文链接。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号