#1 暗夜星辰
我们都知道在model中可以定义 相关联的表名和主键如:
class demo extends spModel
{
public $pk = 'id'; // 每个留言唯一的标志,可以称为主键
public $table = 'table_name'; // 默认的数据表的名称
... ...
}
我看到spClass比例子中有更多的参数选择
object spClass(string class_name, array args, mixed sdir)
其中有一个 array args 可以选择传参 我就想 那么我的主键和表明 是不是可以通过这个传进去呢?
我就做了一个实验
class lib_sqlite extends spModel
{
public $pk = 'id'; // 每个留言唯一的标志,可以称为主键
public $table = 'sqlite_master'; // 默认的数据表的名称
public function __construct($id,$table)
{
$this->table = $table?$table:'sqlite_master';
$this->pk = lib_sqlite::getPk($this->table);
if($id)$this->pk = $id;
$this->_db = spDB($this->table)->_db;
}
public function getPk($table){
$pk = '';
$table_name = $table?$table:$this->table;
$table_info = spDB($table_name)->_db->getTableinfo($table_name);
foreach($table_info as $key => $v){
if($v['pk'] == 1){
//$this->pk = $v['name'];
$pk = $v['name'];
break;
}
}
return $pk;
}
}
dump()之后的代码如下:
Array
(
[c] => main
[a] => index
[table] => category
[SQLiteManager_currentTheme] => PMA
[SQLiteManager_currentLangue] => 13
[SQLiteManager_fullText] => 1
[SQLiteManager_HTMLon] => 0
[PHPSESSID] => 78671cd6b4032c584ac8884ff1554294
)
lib_sqlite Object
(
[pk] => cid
[table] => category
[verifier] =>
[addrules] => Array
(
)
[linker] =>
[tbl_name] =>
[_db] => db_sqlite Object
(
[conn] => Resource id 15
[arrSql] => Array
(
[0] => PRAGMA table_info (category)
[1] => PRAGMA table_info (category)
[2] => select name from sqlite_master where type='table';
[3] => select * from category;
[4] => select * from category;
)
)
)
基本上算是实现了功能 但是我不知道这样写对不对 特别是对spClass参数的使用上
本人学习PHP时间不长 如有错误还 请Jack指正
2011-10-14 14:12:09