php 对象方式传入参数
类是单例模式,对象方式传入参数,如果参数过多是,使用形参容易混乱
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 对象方式传入参数的更多相关文章
- Vue-Router路由Vue-CLI脚手架和模块化开发 之 使用props替代路由对象的方式获取参数
在上一章博文中使用路由对象$route获取参数时,组件和路由对象耦合,在这篇博文中就可以使用props来进行解耦: 1.在组件中使用props选项定义数据,接收参数: 2.在路由中,使用props选项 ...
- JS对象转URL参数(原生JS和jQuery两种方式)
转自:点击打开链接 现在的js框架将ajax请求封装得非常简单,例如下面: $.ajax({ type: "POST", url: "some.php", da ...
- 命令行运行Python脚本时传入参数的三种方式
原文链接:命令行运行Python脚本时传入参数的三种方式(原文的几处错误在此已纠正) 如果在运行python脚本时需要传入一些参数,例如gpus与batch_size,可以使用如下三种方式. pyth ...
- 【vue】@click绑定的函数,如何同时传入事件对象和自定义参数
知识很久不用的话,果然是容易忘的... 记记笔记,希望能加深点印象吧. [仅仅传入事件对象] html: <div id="app"> <button @clic ...
- django模板传入参数的处理方式与反向生成url
前端模板传入参数的处理方式 1.传入单个参数: 前端使用href="/sel-{{ row.0 }}.html, url使用url(r'sel-(.+).html',home.index), ...
- PHP命令行脚本接收传入参数的三种方式
通常PHP都做http方式请求了,可以使用GET or POST方式接收参数,有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务.这就涉及到在shell命令下如何给php传参的问题,通常 ...
- sqlserver 针对预处理sql传入参数的处理方式
在编写sql中,经常需要对sql进行预处理,动态拼接字符串,那么要获取在这预处理之后返回的的某个值并且赋值,传入参数的语法 USE [OA] GO /****** Object: StoredProc ...
- python函数传入参数(默认参数、可变长度参数、关键字参数)
1.python中默认缺省参数----定义默认参数要牢记一点:默认参数必须指向不变对象! 1 def foo(a,b=1): 2 print a,b 3 4 foo(2) #2 1 5 foo(3,1 ...
- NameValuePair方式传参数
今天工作中联调外部的一个接口用post方式传输,我按照文档封装参数成Jason字符串传入,但是对方一直接受参数为空,折腾了半天也没找到问题.很苦恼,检查代码都没有错误,可是为什么对方接受参数为空呢?然 ...
随机推荐
- GIT常用命令以及作用【备忘】
git commit 提交一个修改 git branch branchName 新建一个branchName的分支 git merge branchName 将当前分支与branchName分支合 ...
- C++——多线程
1.多进程和多线程:进程是一个总任务,一个进程可能包含多个线程. 2.并行和并发: 并发的关键是你有处理多个任务的能力,不一定要同时. 并行的关键是你有同时处理多个任务的能力. 3.共享数据的管理和线 ...
- mongo_2 $in 和 $all 区别
in 只需满足( )内的某一个值即可, 而$all 必须满足[ ]内的所有值, > db.table1.find({}); { "_id" : ObjectId(" ...
- Hyperledger Fabric开发
打开Hyperledger Fabric在线开发文档:https://hyperledger-fabric.readthedocs.io 建议在Mac或Linux环境下操作,因为文档基本上是按照Mac ...
- python 添加日期
import pandas as pd applydata['apply_time'] = pd.to_datetime(applydata.apply_time)# applydata.apply_ ...
- 529A And Yet Another Bracket Sequence
传送门 题目大意 给定有一个长度为n n的括号序列,现在有两种操作: 在任意一个位置插入有一个左括号或右括号 将末尾的一个括号放到最前面 可以对这个序列进行若干次操作,问在使括号序列合法的前提下,长度 ...
- 权限管理RBAC
四张表: 1.module:id/name //模块 2.action:id /module_id/name //权限 3.user:id/name //用户表 4.group:id/user_id ...
- css总结9:内边距(padding)和外边距(margin)
1 css总结9:内边距和外边距 通过css总结8:盒子模型可知:内边距(padding),外边距(margin).可以影响盒子在浏览器的位置. 1.1 padding使用:{padding:上 右 ...
- xubuntu14.04LTS安装steam后运行的错误解决办法
我在ubuntu14.10中没碰到过这个问题,但在xubuntu14.04LTS中碰到 Steam needs to install these additional packages: libgl1 ...
- python DDT读取excel测试数据
转自:http://www.cnblogs.com/nuonuozhou/p/8645129.html ddt 结合单元测试一起用 ddt(data.driven.test):数据驱动测试 由外部 ...