• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
雪飞夏日
博客园    首页    新随笔    联系   管理    订阅  订阅
控制PHP类的实例化次数
控制PHP类的实例化次数!为了保证服务器资源的有效利用,而且一个类比方说模板啊,数据库什么的,在一个页面内只需要实例化一次!也就是在内存中只运行一个实例!那么为了避免重复实例化,那么控制PHP类的实例化次数,是很有必要的!
控制PHP类的实例化次数!为了保证服务器资源的有效利用,而且一个类比方说模板啊,数据库什么的,在一个页面内只需要实例化一次!也就是在内存中只运行一个实例!那么为了避免重复实例化,那么控制PHP类的实例化次数,是很有必要的!方法其实很简单:就是给类一个外部接口,私有化(private)构造函数,抛弃可以在类外部使用new实例化该类的方法!以下,就是我给出的一个例子,相信大家一看就明白了!( PHP5 以上版本! )
Code

<?php
class test{
   
const name = 'test';
   
public static $havenew = false;
   
public $name = '我被限制为只能实例化一次了!';
   
private function __construct(){
   
   }
   
function __destruct(){
    self
::$havenew = false;
   }
   
public function inter(){
    
if(self::$havenew){
     
echo '类 '.self::name.' 已被实例化!';
     
return NULL;
    }
else{
     self
::$havenew = true;
     
return new self;
    }
   }
}
$class1 = test::inter();
var_dump($class1);
echo '<br />';
$class2 = test::inter();
var_dump($class2);
?>

这里都是实例通过test里inter()这个方法实例化对象的!因为构造本身不可以直接访问,所以也不存在可以使用new 来实例化!
posted on 2009-07-27 14:11  雪飞夏日  阅读(296)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3