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

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. the install of mysql in Linux System

    一.下载MySql 浏览器打开 https://www.mysql.com/downloads/mysql/#downloads 下载 我下载的版本是Red Hat 5 版本的 https://www ...

  2. 面试题:Java多线程必须掌握的十个问题 背1

    一.进程与线程?并行与并发? 进程代表一个运行中的程序,是资源分配与调度的基本单位.进程有三大特性: 1.独立性:独立的资源,私有的地址空间,进程间互不影响. 2.动态性:进程具有生命周期. 3.并发 ...

  3. 调用req.getParameter方法出现中文乱码(全是问号???)

    在java开发中,如果编码配置不统一,很容易出现中文乱码的情况,这里就记录下自己遇到的调用req.getParameter方法出现中文乱码,并解决这一情况的方法 注意修改以下几个地方 1.jsp页面中 ...

  4. 9.TOP 子句--mysql limit

    TOP 子句 TOP 子句用于规定要返回的记录的数目. 对于拥有数千条记录的大型表来说,TOP 子句是非常有用的. 注释:并非所有的数据库系统都支持 TOP 子句. MySQL 语法 SELECT c ...

  5. 对于 yii2 高级模板 生成文件入口

    安装的 advanced 模板web下是没有index.php 方法: 在advanced 目录下有个init.bat 应用程序  双击即可如下 查看advanced 目录 (刷新)如下 已有:

  6. rpmbuild SPEC语法

    rpmbuild SPEC语法 摘自:http://bbs.chinaunix.net/thread-4179207-1-1.html spec文件写作规范 2008-09-28 11:52:17 分 ...

  7. Laravel框架中的数据库CURD操作、连贯操作、链式操作的用法

    Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁.富于 ...

  8. 解决chrome浏览器无法得到window.showModalDialog返回值的问题

    父页面处理: function ProductList() {   var TypeID = window.document.getElementById("Type").valu ...

  9. APUE(3)---文件I/O (1)

    一.引言 UNIX系统中的大多数文件对I/O只需用到5个函数:open/read/write/lseek和close,这些函数都是不带缓冲I/O(Unbuffered I/O).只要涉及到多个进程间共 ...

  10. CSVHelper 导出CSV 格式

    public class CSVHelper { System.Windows.Forms.SaveFileDialog saveFileDialog1;//保存 private string hea ...