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

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. 【微信公众平台开发】微信JS-SDK开发,信公众平台js-sdk

    根据微信开发文档步骤如下: 1.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. JS接口安全域名设置 mi.com(前面不用带www/http,域名必须备案过)   2 ...

  2. Smarty3——复合变量修饰器输

    你可以联合使用多个修饰器. 它们会按复合的顺序来作用于变量,从左到右. 它们必须以| (竖线)进行分隔,以‘:’号设置参数 {$articleTitle} {$articleTitle|upper|s ...

  3. 远程访问Function时报错Remote table-valued function calls are not allowed.

    开始是这样调用的:select * from [LinkedServer].[db name].dbo.[function name](param1, param2) 原因: Only table-v ...

  4. jQuery对象与DOM对象及互相转化

    <p id=‘’hello”></p> 普通处理,通过标准JavaScript处理: var p = document.getElementById('hello'); p.i ...

  5. 使用 Vue.component

    引入 vue.js. HTML <div id="app"></div> CSS .greeting { padding: 3rem 1.5rem; bac ...

  6. URAL 1356. Something Easier(哥德巴赫猜想)

    题目链接 题意 : 给你一个数n,让你找出几个素数,使其相加为n,输出这些素数. 思路 : 哥德巴赫猜想 : 任何一个大于 6的偶数都可以表示成两个素数之和. 任何一个大于9的奇数都可以表示成三个素数 ...

  7. java代码实现顺序队列

    java实现顺序队列 package xianxinTable; import java.util.ArrayList; import java.util.Iterator; import com.s ...

  8. web端访问文件没有权限的问题

    背景 : ftp的PHP项目中的某些文件没有写入的权限..系统报注意错误!!! 原因 : 一般情况下,web端访问网站一般使用的是WWW权限(有限制的权限组)去访问, 但是我们编程开发的时候, 有可能 ...

  9. angular 辅助路由

  10. javascript js函数重名后面的覆盖前面的

    js 函数重名后面的覆盖前面的   var x = 1;    var y = 0;    var z = 0;    function add(n) { return n = n + 1; }    ...