仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1182|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP单例形式

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:35:07 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
怎么培养啊 别光说不练啊,好 ,比如新人入门自己步是配置环境,虽然现在都有很多的集成环境,但是真实的体验下配置环境还是会有很多帮助,不论是你以后工作还是在真实的linux下开发。   形式关于OOP开辟人员特别有效,由于他有助于创立不乱的API,而且依然坚持必定的天真度。一种形式可以匡助咱们界说担任完成特定义务的对象,还可以答应咱们全体修正失落某个类而不必修正与这些类打交道的代码。前者被称为类的职责,后者被称为类的多态性。
单例形式被看成职责形式,他用来在使用法式中创立一个单一的功效会见点。它将创立对象的掌握权拜托到一个单一的会见点上。在任什么时候候,使用法式中都只会有这个类唯一的一个实例存在。这可以避免咱们去翻开数据库的多个毗连或不用要得利用过剩的体系资本。在加倍庞杂的体系中,利用单例形式在保持使用法式形态的同步方面也特别有效。
一切的单例类最少具有以下三种公共元素:
     它们必需具有一个机关函数,而且必需被标志为private。
     它们具有一个保留类的实例的静态成员变量。
     它们具有一个会见这个实例的公共的静态办法
和通俗类分歧的是,单例类不克不及在其他类中直接实例化。单例类只能被其本身实例化。要取得如许的一种了局, __construct()办法必需被标志为private。假如试图用private机关函数机关一个类,就会失掉一个可会见性级其余毛病。
要让单例类起感化,就必需使其为其他类供应一个实例,用它挪用各类办法。单例类不会创立实例正本,而是会向单例类外部存储的实例前往一个援用。了局是单例类不会反复占用内存和体系资本,从而让使用法式的其它局部更好地利用这些资本。作为这一形式的一局部,必需创立一个空的公有__clone()办法,以避免对象被复制或克隆。
前往实例援用的这个办法凡是被定名为getTnstance()。这个办法必需是静态的,并且假如它还没有实例化,就必需停止实例化。getInstance() 办法经由过程利用 instanceof 操作符和self 关头字,可以检测到类是不是已被实例化。
/* 例子:数据库毗连职责的集中掌握 */
class Database {
     private $_db;
     static $_instance;
     private function __construct() {
         $this->_db = pg_connect('dbname=example_db');
     }
     private __clone() {};
     public static function getInstance() {
         if( ! (self::$_instance instanceof self) ) {
             self::$_instance = new self();
         }
         return self::$_instance;
     }
<p>    public function query($sql) {
         // 利用 $this->_db 履行一个查询
         return pg_query($this->_db, $sql);
     }
}在学习中,我也一直这样要求着自己。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-18 09:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表