php单例模式哪里出错了
classsingleton{privatestatic$_instance;privatefunction__construct($my_dsn){returnnewP...
class singleton{
private static $_instance;
private function __construct($my_dsn){
return new PDO($my_dsn);
}
private function __clone(){
}
public static function getPdo($_dsn){
if(!self::$_instance instanceof self)
{
self::$_instance = new singleton($_dsn);
}
return self::$_instance;
}
}
后面调用
$dsn = 'mysql:dbname = test;host = localhost;user = user;password = 1234';
$pdos = singleton::getPdo($dsn); 展开
private static $_instance;
private function __construct($my_dsn){
return new PDO($my_dsn);
}
private function __clone(){
}
public static function getPdo($_dsn){
if(!self::$_instance instanceof self)
{
self::$_instance = new singleton($_dsn);
}
return self::$_instance;
}
}
后面调用
$dsn = 'mysql:dbname = test;host = localhost;user = user;password = 1234';
$pdos = singleton::getPdo($dsn); 展开
2个回答
展开全部
1、 private $conf = array; //这个的作用是什么?
这只是为了初始化一个属性罢了,等于什么不重要。NULL也可以,在下面的代码中它会被重新赋值。另外,如果希望初始值是数组的话,这样写是错的。应该是 = array();
2、$this->conf = conf::getIns(); //这个属性可以访问getins(); 有什么作用
你这里应该还有另一个 class conf 吧。它只是调用另一个类的方法,取回结果并赋值到 $conf 上罢了(上面说过的)
3、$this->connect($this->conf->host,$this->conf->user,$this->conf->pwd);//这个是不是把host,conf,pwd分别放在数组里...
把取回来的结果做为参数交给下面的方法。。这里从头到尾和数组一点关系也没有。只是最基本的变量传来传去罢了。
是否可以解决您的问题?
这只是为了初始化一个属性罢了,等于什么不重要。NULL也可以,在下面的代码中它会被重新赋值。另外,如果希望初始值是数组的话,这样写是错的。应该是 = array();
2、$this->conf = conf::getIns(); //这个属性可以访问getins(); 有什么作用
你这里应该还有另一个 class conf 吧。它只是调用另一个类的方法,取回结果并赋值到 $conf 上罢了(上面说过的)
3、$this->connect($this->conf->host,$this->conf->user,$this->conf->pwd);//这个是不是把host,conf,pwd分别放在数组里...
把取回来的结果做为参数交给下面的方法。。这里从头到尾和数组一点关系也没有。只是最基本的变量传来传去罢了。
是否可以解决您的问题?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<?php
class Singleton {
private static $_dsn = NULL;
private function __construct($my_dsn){
return new PDO($my_dsn);
}
public static function GetPdo($my_dsn){
if(is_null(self::$_dsn)){
self::$_dsn = new self($my_dsn);
}
return self::$_dsn;
}
}
$dsn = 'mysql:dbname = test;host = localhost;user = user;password = 1234';
$GetPdo = Singleton::GetPdo($dsn);
?>
望采纳 Thx
追问
不得
追答
单态模式,我们在项目中运用的很多,是这样的,你链接PDO方式错了。
$dsn = new PDO('mysql:host=xxx;port=xxx;dbname=xxx', 'username', 'password');
$dsn = new PDO("mysql:host=localhost;dbname=test","user","1234");
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询