php static variable
时间:2013-10-26
来源:互联网
不过依然出现Notice: Use of undefined constant
在DB::Connect的所有DB static variable
{
private $handle;
private $type;
private $transaction_count;
private $statements;
const KEY_TYPE = 'KEY_TYPE';
const TYPE_STRING = 'TYPE_STRING'; //string
const TYPE_BINARY = 'TYPE_BINARY'; //binary or big object
const TYPE_INTEGER = 'TYPE_INTEGER'; //integer
const TYPE_FLOAT = 'TYPE_FLOAT'; //float
const TYPE_TIMESTAMP = 'TYPE_TIMESTAMP'; //date & time(default now)
static $TYPE_ID = array(
TYPE_STRING => 1,
TYPE_BINARY => 2,
TYPE_INTEGER => 3,
TYPE_FLOAT => 4,
TYPE_TIMESTAMP => 5,
);
const CONSTRAINT_PRIMARY = 'CONSTRAINT_PRIMARY'; //true or false(default)
const CONSTRAINT_AUTO_INCREMENT = 'CONSTRAINT_AUTO_INCREMENT'; //true or false(default)
const CONSTRAINT_NOT_NULL = 'CONSTRAINT_NOT_NULL'; //true or false(default)
const CONSTRAINT_UNIQUE = 'CONSTRAINT_UNIQUE'; //true or false(default)
const CONSTRAINT_DEFAULT = 'CONSTRAINT_DEFAULT'; //default value
const CONSTRAINT_FOREIGN = 'CONSTRAINT_FOREIGN'; //target key
private static $SQL_STATEMENT_EXTRACT = array(
'sqlite' => array(
DB::TYPE_STRING => 'TEXT',
DB::TYPE_BINARY => 'BLOB',
DB::TYPE_INTEGER => 'INTEGER',
DB::TYPE_FLOAT => 'REAL',
DB::TYPE_TIMESTAMP => 'INTEGER',
DB::CONSTRAINT_PRIMARY => 'PRIMARY KEY',
DB::CONSTRAINT_AUTO_INCREMENT => 'AUTOINCREMENT',
DB::CONSTRAINT_NOT_NULL => 'NOT NULL',
DB::CONSTRAINT_UNIQUE => 'UNIQUE',
DB::CONSTRAINT_DEFAULT => 'DEFAULT',
DB::CONSTRAINT_FOREIGN => 'REFERENCES',
),
);
private function __construct($dbh, $dbt)
{
array_key_exists($dbt, DB:SQL_STATEMENT_EXTRACT) or die('don\'t support.');
$this->handle = $dbh;
$this->type = $dbt;
$this->transaction_count = 0;
$this->statements = DB:SQL_STATEMENT_EXTRACT[$dbt];
}
static function Connect($db_type = '', $db_host = '', $db_name = '', $db_user = '', $db_password = '')
{
switch($db_type)
{
case '':
$dsn = "sqlite::memory:";
break;
case 'sqlite':
$dsn = "sqlitedb_host";
break;
default:
$dsn = "$db_type:host=$db_host;dbname=$db_name";
break;
}
if($db_type == '')
{
$db_type = 'sqlite';
}
$_SQL_STATEMENT = self:SQL_STATEMENT_EXTRACT[$db_type];
$KEY_NODE = array(
'table_name ' . $_SQL_STATEMENT[self::TYPE_STRING] . ' ' . $_SQL_STATEMENT[self::CONSTRAINT_NOT_NULL],
'column_name ' . $_SQL_STATEMENT[self::TYPE_STRING] . ' ' . $_SQL_STATEMENT[self::CONSTRAINT_NOT_NULL],
'column_type ' . $_SQL_STATEMENT[self::TYPE_INTEGER] . ' ' . $_SQL_STATEMENT[self::CONSTRAINT_NOT_NULL],
);
try
{
$dbh = new PDO($dsn, $db_user, $db_password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->query('CREATE TABLE IF NOT EXISTS db_index(' . implode(', ', $KEY_NODE) . ')');
} catch(PDOException $e)
{
var_dump($e->getMessage());
}
return new DB($dbh, $db_type);
}
作者: Susan﹏汪汪 发布时间: 2013-10-26
作者: 泉水 发布时间: 2013-10-26
作者: Susan﹏汪汪 发布时间: 2013-10-26
作者: DarkHero8 发布时间: 2013-10-26
function Connect 有改善空间
作者: Susan﹏汪汪 发布时间: 2013-10-26
{
private $handle;
private $transaction_count;
private $SQL_STATEMENT;
const KEY_TYPE = 'KEY_TYPE';
const TYPE_STRING = 'TYPE_STRING'; //string
const TYPE_BINARY = 'TYPE_BINARY'; //binary or big object
const TYPE_INTEGER = 'TYPE_INTEGER'; //integer
const TYPE_FLOAT = 'TYPE_FLOAT'; //float
const TYPE_TIMESTAMP = 'TYPE_TIMESTAMP'; //date & time(default now)
static $TYPE_ID = array(
TYPE_STRING => 1,
TYPE_BINARY => 2,
TYPE_INTEGER => 3,
TYPE_FLOAT => 4,
TYPE_TIMESTAMP => 5,
);
const CONSTRAINT_PRIMARY = 'CONSTRAINT_PRIMARY'; //true or false(default)
const CONSTRAINT_AUTO_INCREMENT = 'CONSTRAINT_AUTO_INCREMENT'; //true or false(default)
const CONSTRAINT_NOT_NULL = 'CONSTRAINT_NOT_NULL'; //true or false(default)
const CONSTRAINT_UNIQUE = 'CONSTRAINT_UNIQUE'; //true or false(default)
const CONSTRAINT_DEFAULT = 'CONSTRAINT_DEFAULT'; //default value
const CONSTRAINT_FOREIGN = 'CONSTRAINT_FOREIGN'; //target key
private function __construct($dbh, $SQL_STATEMENT)
{
$this->handle = $dbh;
$this->transaction_count = 0;
$this->SQL_STATEMENT = $SQL_STATEMENT;
}
static function Connect($db_type = '', $db_host = '', $db_name = '', $db_user = '', $db_password = '')
{
$SQL_STATEMENT = array(
'sqlite' => array(
self::TYPE_STRING => 'TEXT',
self::TYPE_BINARY => 'BLOB',
self::TYPE_INTEGER => 'INTEGER',
self::TYPE_FLOAT => 'REAL',
self::TYPE_TIMESTAMP => 'INTEGER',
self::CONSTRAINT_PRIMARY => 'PRIMARY KEY',
self::CONSTRAINT_AUTO_INCREMENT => 'AUTOINCREMENT',
self::CONSTRAINT_NOT_NULL => 'NOT NULL',
self::CONSTRAINT_UNIQUE => 'UNIQUE',
self::CONSTRAINT_DEFAULT => 'DEFAULT',
self::CONSTRAINT_FOREIGN => 'REFERENCES',
),
);
array_key_exists($db_type, $SQL_STATEMENT) or die('don\'t support.');
$SQL_STATEMENT = $SQL_STATEMENT[$db_type];
switch($db_type)
{
case '':
$dsn = "sqlite::memory:";
break;
case 'sqlite':
$dsn = "sqlite:$db_host";
break;
default:
$dsn = "$db_type:host=$db_host;dbname=$db_name";
break;
}
if($db_type == '')
{
$db_type = 'sqlite';
}
$KEY_NODE = array(
sprintf('table_name %s %s', $SQL_STATEMENT[self::TYPE_STRING], $SQL_STATEMENT[self::CONSTRAINT_NOT_NULL]),
sprintf('column_name %s %s', $SQL_STATEMENT[self::TYPE_STRING], $SQL_STATEMENT[self::CONSTRAINT_NOT_NULL]),
sprintf('column_type %s %s', $SQL_STATEMENT[self::TYPE_INTEGER], $SQL_STATEMENT[self::CONSTRAINT_NOT_NULL]),
);
try
{
$dbh = new PDO($dsn, $db_user, $db_password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->query('CREATE TABLE IF NOT EXISTS db_index(' . implode(', ', $KEY_NODE) . ')');
} catch(PDOException $e)
{
var_dump($e->getMessage());
}
return new self($dbh, $SQL_STATEMENT);
}
作者: Susan﹏汪汪 发布时间: 2013-10-26
汪汪果然经验不足
作者: Susan﹏汪汪 发布时间: 2013-10-26
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28