喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
     
标题: [问题] 扩展PDO的问题,出现500错误,请问为什么?  
 
x
新手上路
Rank: 1



UID 100704
精华 0
积分 25
帖子 16
金钱 25 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-11-5
状态 离线
扩展PDO的问题,出现500错误,请问为什么?

首先说明下,在不扩展的情况下直接使用PDO类,一切正常。下面的代码是我使用单件模式扩展PDO的代码

DB.class.php

<?php
/*
 * PDO扩展类
 * 
 */
class DB extends PDO {
    
//私有的静态变量,保存唯一的DB实例
    
private static $instance NULL;
    
    
//数据库配置
    
private $dsn _DSN_;
    private 
$db_user _DB_USER_;
    private 
$db_pass _DB_PASS_;
    private 
$options = array(parent::ATTR_PERSISTENT => true);//建立持久连接
    
    //
    
private $fetch_mode parent::FETCH_ASSOC;

    
//私有的构造函数,防止用于外部直接实例化DB类
    
private function __construct() {
        
parent::__construct($this->dsn$this->db_user$this->db_pass$this->options);
    }
    
    
//获得实例的唯一入口
    
public static function getInstance() {
        if (
self::$instance === NULL) {
            
self::$instance = new DB();
            return 
self::$instance;
        }
        return 
self::$instance;
    }
    
    
    
//设置fetch模式
    
public function setFetchMode($fetch_mode) {
        
$this->fetch_mode $fetch_mode;
    }
   
    
//
    
public function query($sql) {
        
$stmt parent::query($sql);
        if(
$stmt) {
            
$stmt->setFetchMode($this->fetch_mode);
        }
        return 
$stmt;
    }
    
    
//析构函数
    
function __destruct() {
        
//
    
}
    
    
//克隆函数
    
function __clone() {
        
trigger_error("不允许CLONE"E_USER_ERROR);
    }
}
?>
然后我在别的文件中直接DB::getInstance()调用,出现500错误,经我测试,问题可能出现在构造函数中

百思不得其解:Q

[ 本帖最后由 x 于 2008-5-7 06:58 PM 编辑 ]
2008-5-7 06:50 PM#1
查看资料  发短消息  顶部
 
x
新手上路
Rank: 1



UID 100704
精华 0
积分 25
帖子 16
金钱 25 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-11-5
状态 离线
[推荐阅读] 空间一年只40 域名免费送!!!
问题解决,构造函数设置成public就行了,但这样的话,还用单件模式也就没意思了.

为什么我不能使用私有的构造函数?

[ 本帖最后由 x 于 2008-5-7 07:27 PM 编辑 ]
2008-5-7 07:23 PM#2
查看资料  发短消息  顶部
 
ctrlming
注册会员
Rank: 2



UID 118391
精华 0
积分 107
帖子 271
金钱 101 喜悦币
威望 0
人脉 6
阅读权限 20
注册 2008-4-9
来自 北京
状态 离线
[推荐阅读] 哎,帖子又被删除了!!55
私有构造函数能实例化吗?我也是问一下。
楼下指点
2008-5-7 10:41 PM#3
查看资料  Blog  发短消息  顶部
 
x
新手上路
Rank: 1



UID 100704
精华 0
积分 25
帖子 16
金钱 25 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-11-5
状态 离线
[推荐阅读] 用户通行证接口设计,另附数据模板解析对象
回楼上,私有的构造函数,只有在类内部才能实例化,但是我发现PDO这个类有点问题,不知道为什么?我扩展自己的类,用私有构造函数没问题。但是就是扩展PDO,用私有构造就不行
2008-5-8 08:58 AM#4
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.025426 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP