类是单例模式,对象方式传入参数,如果参数过多是,使用形参容易混乱

class ObjectPdo {

    /**
* 基本配置信息
* @var array
*/
private $config = array(
'dbms'=> 'mysql', //数据库类型
'host'=> 'localhost',//数据库主机名
'port'=> 3306, //数据库端口
'dbName'=> 'im', //使用的数据库
'user'=> 'root', //数据库连接用户名
'pass'=> 'root', //对应的密码
'char'=> 'utf8', // 字符集
'long_conn'=>false, // 是否是长连接
); // 数据连接 dsn
private $dsn=""; // 定义私有属性
private static $_instance = null; // 定义 静态 pdo 在实例化的时候也可以使用静态调用
private static $pdo=null; //初始化
private function __construct(){ } //私有化克隆方法
private function __clone(){ } //公共化获取实例方法
public static function getInstance(){
//if (!(self::$_instance instanceof Object)) // 这个两种方式都可以
if (self::$_instance === null)
{
self::$_instance = new self();
}
return self::$_instance;
} /**
* 使用 $this->name 获取配置
* @param string $name 配置名称
* @return multitype 配置值
*/
public function __get($name)
{
return $this->config[$name];
} public function __set($name,$value)
{
if(isset($this->config[$name]))
{
$this->config[$name] = $value;
}
} public function __isset($name)
{
return isset($this->config[$name]);
} // 拼接dsn 连接字符串
private function str_dsn()
{
$this->dsn="$this->dbms:host=$this->host;port=$this->port;dbname=$this->dbName;charset=$this->char";
} // pdo 连接
public function conn()
{
if($this->long_conn==true)
{
$this->long_conn=array(PDO::ATTR_PERSISTENT => true);
}else
{
$this->long_conn=array();
}
try {
// 实例化 PDO 对象
$this->str_dsn(); // 拼接dsn //$pdo = new PDO($this->dsn, $this->config['user'], $this->config['pass'],$this->config['long_conn']); // 如果使用静态pdo 可以使用下面这种方法
if(self::$pdo === null)
{
self::$pdo = new PDO($this->dsn, $this->user, $this->pass,$this->long_conn);
} echo '对象:';
var_dump(self::$pdo);
echo "<br/>";
echo '参数 dbName 值: '.$this->dbName;
//return $pdo; // 如果使用静态pdo 可以使用下面这种方法
/*if(self::$pdo === null)
{
self::$pdo = new PDO($this->dsn, $this->config['user'], $this->config['pass'],$this->config['long_conn']);
}
return self::$pdo;*/ } catch (PDOException $e) {
die ("Error!: " . $e->getMessage() . "<br/>");
}
}
}

调用示例

$singleton=ObjectPdo::getInstance();
$singleton->conn();
$singleton->dbName="test";
echo "<br/>";
$singleton->conn();

页面显示结果

对象:object(PDO)#2 (0) { }
参数 dbName 值: im
对象:object(PDO)#2 (0) { }
参数 dbName 值: test

php 对象方式传入参数的更多相关文章

  1. Vue-Router路由Vue-CLI脚手架和模块化开发 之 使用props替代路由对象的方式获取参数

    在上一章博文中使用路由对象$route获取参数时,组件和路由对象耦合,在这篇博文中就可以使用props来进行解耦: 1.在组件中使用props选项定义数据,接收参数: 2.在路由中,使用props选项 ...

  2. JS对象转URL参数(原生JS和jQuery两种方式)

    转自:点击打开链接 现在的js框架将ajax请求封装得非常简单,例如下面: $.ajax({ type: "POST", url: "some.php", da ...

  3. 命令行运行Python脚本时传入参数的三种方式

    原文链接:命令行运行Python脚本时传入参数的三种方式(原文的几处错误在此已纠正) 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. pyth ...

  4. 【vue】@click绑定的函数,如何同时传入事件对象和自定义参数

    知识很久不用的话,果然是容易忘的... 记记笔记,希望能加深点印象吧. [仅仅传入事件对象] html: <div id="app"> <button @clic ...

  5. django模板传入参数的处理方式与反向生成url

    前端模板传入参数的处理方式 1.传入单个参数: 前端使用href="/sel-{{ row.0 }}.html, url使用url(r'sel-(.+).html',home.index), ...

  6. PHP命令行脚本接收传入参数的三种方式

    通常PHP都做http方式请求了,可以使用GET or POST方式接收参数,有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务.这就涉及到在shell命令下如何给php传参的问题,通常 ...

  7. sqlserver 针对预处理sql传入参数的处理方式

    在编写sql中,经常需要对sql进行预处理,动态拼接字符串,那么要获取在这预处理之后返回的的某个值并且赋值,传入参数的语法 USE [OA] GO /****** Object: StoredProc ...

  8. python函数传入参数(默认参数、可变长度参数、关键字参数)

    1.python中默认缺省参数----定义默认参数要牢记一点:默认参数必须指向不变对象! 1 def foo(a,b=1): 2 print a,b 3 4 foo(2) #2 1 5 foo(3,1 ...

  9. NameValuePair方式传参数

    今天工作中联调外部的一个接口用post方式传输,我按照文档封装参数成Jason字符串传入,但是对方一直接受参数为空,折腾了半天也没找到问题.很苦恼,检查代码都没有错误,可是为什么对方接受参数为空呢?然 ...

随机推荐

  1. 并发之AbstractQueuedLongSynchronize----AQS

    一概述 谈论到并发,不得不谈论锁,而谈论到锁而言,又离不开ReentrantLock.ReentrantLock是锁锁的一种实现方式,对于锁而言,我们这里就需要讨论到AQS,即上面的AbstractQ ...

  2. 283. Move Zeroes把零放在最后面

    [抄题]: Given an array nums, write a function to move all 0's to the end of it while maintaining the r ...

  3. 数据库sql 开窗函数

    --本文采用Oracle数据库测试,前4个查询为一组,后2个查询为一组,每组前面的查询是为了推出最后的查询 --创建表,为了简化处理,字段类型都采用varcharcreate table tb_sc( ...

  4. OpenCV的Rect矩形类用法

    转自 http://blog.csdn.net/kh1445291129/article/details/51149849 //如果创建一个Rect对象rect(100, 50, 50, 100),那 ...

  5. Vue.js组件调用用及其组件通信

    1.需要import,然后components注册.然后如下代码调用. <template> <header></header> //注册后才能这样使用 <b ...

  6. Mybatis_映射文件_Select

    一.Select元素来定义查询操作 Id:唯一标识符.用来引用这条SQL语句,需要和接口的方法名一致 parameterType:参数类型.可以不传,MyBatis会根据TypeHandler自动推断 ...

  7. OSG3.2+Qt5.2.1+VS2012+OSGEarth 2.5编译问题记录

    问题1:CMake Error at D:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake: ...

  8. POJ1125 Stockbroker Grapevine(spfa枚举)

    Description Stockbrokers are known to overreact to rumours. You have been contracted to develop a me ...

  9. Android sutdio单元测试 简单使用步骤

    1.简介 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证.比如一个函数,一个方法等 2.添加依赖 dependencies { testCompile 'junit: ...

  10. vba实现excel多表合并

    Excel多表合并之vba实现 需求 保留列名,复制每一个excel里的数据,合并到一个excel 操作步骤 将要合并的文件放在同一文件夹下,复制过来就好(ps:最好不要直接操作原数据文件,避免操作失 ...