已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 教程

标题: 类的单例模式

作者: @Ta

时间: 2012-08-12

点击: 3490

记得以前看过老虎的一个帖子,老虎好像说他经常用类的静态属性,因为老虎注重效率.不过我觉得,这样发挥不出来面向对象的真正的作用,上次在书上看到了类的单例模式
比如数据库类,如果每次使用都实例化的确很浪费资源,效率低下.但是使用类的单例模式,在第一次使用时实例化类,以后使用时只返回这个实例的句柄
class db
{
private static $obj=NULL;
private function __construct()
{
}
public static function getobj()
{
if(self::$obj==NULL)
self::$obj=new db();
else
return self::$obj;
}
private function __clone()
{
}
}
将构造函数与克隆函数设为私有,防止直接实例化或克隆产生新的实例.
以后在使用时,$obj=db::getobj();就可以了
@老虎会游泳 我的问题是,一个脚本结束后类的静态属性还会保留着?在另一个脚本竟然还能调用?

[隐藏样式|查看源码]


『回复列表(7|隐藏机器人聊天)』

1. 小白路过
(/@Ta/2012-08-12 08:27//)

2. 沙发一起坐
(/@Ta/2012-08-12 08:45//)

3. 静态会保留,当然能调用了,原因不知道如何表达
(/@Ta/2012-08-12 08:52//)

4. @扯淡的青春 既然这样 如果我重载类的属性岂不是能当一个小型数据库用?比操作文件方便多了
(/@Ta/2012-08-12 08:56//)

5. @五角圆星,你说错原因了。真正的原因是以前我不太会面向对象。。。
你的问题的答案是否定的,PHP在一次请求结束后不会保留任何东西。你理解错那句话的意思了。它是说,在一次请求中很可能连接数据库多次,用这种方法可以使多次共用一个数据库连接。
(/@Ta/2012-08-12 11:57//)

6. 额,汗颜,钻地缝
(/@Ta/2012-08-12 12:19//)

7. @老虎会游泳 我还以为在任何地方include后都能直接用以前的实例
(/@Ta/2012-08-12 13:25//)

回复需要登录

8月30日 07:29 星期六

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1