数据库实例化操作的代码优化写法,核心类进行精简了……
本帖最后由 xjl756425616 于 2013-07-16 16:59:50 编辑
class ActiveRecord
{
public $table;
public $data;
public $obj;
public function __construct($table)
{
$this->table = $table;
$this->data = array();
$this->obj = '';
$this->connect();
}
public function connect()
{
$config = array_change_key_case(require("Conf/config.php"));
if ((!empty($config['db_host'])) && (!empty($config['db_user'])) && (!empty($config['db_name']))) {
$db_host = $config['db_host'];
$db_user = $config['db_user'];
$db_pwd = $config['db_pwd'];
$db_name = $config['db_name'];
$con = mysql_connect($db_host, $db_user, $db_pwd);
mysql_select_db($db_name, $con);
mysql_query("SET NAMES UTF8");
}
}
public function __set($name, $value)
{
$this->data[$name] = $value;
if(is_object($this->obj)) {
$this->obj->$name = $value;
}
}
public function __get($name)
{
if(is_object($this->obj)) {
return $this->obj->$name;
}
}
public function add()
{
$sql = "insert into " . $this->table . "(" . implode(",", array_keys($this->data)) . ") values('" . implode("','", array_values($this->data)) . "')";
mysql_query($sql);
}
public function find($id)
{
$data = mysql_query("select * from $this->table where id=" . $id);
$num = mysql_num_rows($data);
if ($num) {
$this->obj = mysql_fetch_object($data);
}
}
public function select($param = '')
{
$array = array();
if ($param == '') {
$res = mysql_query("select * from $this->table");
while ($arr = mysql_fetch_array($res)) {
$array[] = $arr;
}
return $array;
} else {
$data = split(",", $param);
foreach ($data as $v) {
$res = mysql_query("select * from $this->table where id=" . $v);
$num = mysql_num_rows($res);
if ($num) {
$arr = mysql_fetch_array($res);
$array[] = $arr;
}
}
return $array;
}
}
public function save()
{
foreach ($this->obj as $k => $v) {
$sql = "update " . $this->table . " set " . $k . "='" . $v . "' where id=" . $this->obj->id;
mysql_query($sql);
}
}
public function delete()
{
foreach ($this->obj as $k => $v) {
$sql = "delete from " . $this->table . " where id=" . $this->obj->id;
mysql_query($sql);
}
}
}
function T($table)
{
$t = new ActiveRecord($table);
return $t;
}
[解决办法]
怎么跟 thinkphp 一样?
精简了,路也窄了
[解决办法]
AR模式。。其他代码是在你写的CMS里面吗?
我现在使用的是CI的AR代码。感觉还凑合。。ZF的太庞大。。期待更小巧的AR