ホームページ  >  記事  >  バックエンド開発  >  データベースのインスタンス化操作のコードが最適化され、コア クラスが合理化されています。

データベースのインスタンス化操作のコードが最適化され、コア クラスが合理化されています。

WBOY
WBOYオリジナル
2016-06-23 14:15:46954ブラウズ

この投稿は、xjl756425616 によって 2013-07-16 16:59:50 に最終編集されました

YouYaX

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;}


データ テーブルのインスタンス化操作

この表記は、主キーが id で自動キーであるデータ テーブルに適しています。増加、クイック操作。

データテーブルメソッドをインスタンス化します

$u=T('table name'); のように T() 関数で表されます
データを追加します

$u=T("table name"); >フィールド名 = 値;

$u->フィールド名 2 = 値;

$u=T("テーブル名"); u->find($id);
$u->フィールド名 = 値;

$u->save();

$u=T("テーブル名");

$u->find($id);

Echo $u->フィールド名 2
データを検索Set

$u=T("table name");

$data=$u->select("id1,id2,id3");

パラメータが空の場合は、データ テーブル セット全体を返します。指定された ID を持つデータセットを返すことも選択できます。戻り値
はオブジェクトではなく 2 次元配列です。
データを削除します

$u=T("テーブル名");

$u->delete();



ディスカッションに返信

thinkphp とどのように同じですか?
簡略化され、道が狭くなります

ARモード。 。 CMS 内の他のコードはあなたが作成したものですか?
現在CIのARコードを使用しています。大丈夫だと思います。 。 ZFは大きすぎます。 。よりコンパクトなARに期待

thinkphpとどう違うの?
すっきりして道も狭くなりました
移植も簡単で二次開発も楽になりそうです

ARモード。 。 CMS 内の他のコードはあなたが作成したものですか? 現在CIのARコードを使用しています。大丈夫だと思います。 。 ZFは大きすぎます。 。より小さな AR を楽しみにしています
上記のクラスは完全で比較的単純なカードであり、これ以上の詳細は実装されていません。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。