PHP : ActiveRecord实现示例
先简单介绍一下Active Record:
- <?php
- define('DBHOST', 'localhost');
- define('DBUSER', 'root');
- define('DBPASS', '');
- define('DBNAME', 'test');
- define('TABLE_PREFIX', 't_');
- class ActiveRecord {
- private $tablepre;
- private $class;
- private $table;
- private static $link;
- private $data;
- public $primaryKey = 'id';
- public function __construct() {
- $this->tablepre = TABLE_PREFIX;
- $this->class = get_class($this);
- $this->table = $this->tablepre . strtolower($this->class);
- $this->data = array();
- $this->connect();
- }
- private function connect() {
- if(!self::$link) {
- self::$link = mysql_connect(DBHOST, DBUSER, DBPASS);
- mysql_select_db(DBNAME);
- }
- return self::$link;
- }
- public function __set($name, $value) {
- $this->data[$name] = $value;
- }
- private function implodefields($cond) {
- $fields = array();
- foreach($cond as $key => $value) {
- $value = mysql_real_escape_string($value);
- $fields[] = "`$key`='$value'";
- }
- return implode(', ', $fields);
- }
- public function add() {
- $fields = $this->implodefields($this->data);
- $sql = "INSERT INTO `{$this->table}` SET $fields";
- $this->query($sql);
- }
- public function findById($id) {
- $sql = "SELECT * FROM `{$this->table}` WHERE `{$this->primaryKey}`='$id' LIMIT 1";
- $data = $this->getOne($sql);
- return $this->makeObjFromArray($data);
- }
- private function makeObjFromArray($data) {
- $obj = new $this->class;
- foreach($data as $key => $value) {
- $obj->$key = $value;
- }
- return $obj;
- }
- private function query($sql) {
- echo $sql . "\n";
- return mysql_query($sql, self::$link);
- }
- private function getOne($sql) {
- $data = $this->query($sql);
- if($data) {
- $item = mysql_fetch_assoc($data);
- return $item;
- }
- return false;
- }
- }
- class User extends ActiveRecord {
- var $primaryKey = 'id';
- }
- $user = new User();
- $user->name = '热电影';
- $user->email = 'www.redianying.com';
- $user->add();
- $user = $user->findById(1);
- print_r($user);
PHP : ActiveRecord实现示例的更多相关文章
- JFinal之ActiveRecord开发示例
JFinal独创Db + Record模式示例 JFinal配备的ActiveRecord插件,除了实现了类似Rails ActiveRecrod的功能之外,还实现了Db + Record模式,此模式 ...
- Yii 框架学习--01 框架入门
Yii 是一个高性能的,适用于开发 WEB2.0 应用的 PHP 框架. Yii目前有两个主要的版本: 2.0 和 1.1.本文以YII 2.0.7为例. 环境需求 Yii2.0 框架有一些系统上的需 ...
- Yii ActiveRecord 的via和viaTable示例
Yii中,将两个不相关的表利用中间表关联有via和viaTable两种方法,这里通过用户权限查询来进行示例. 关系如上,需要建立三个表 用户表 权限表 用户表 数据: 权限表 数据: 关联表 数据: ...
- ActiveRecord模式整理
DAO Data Access Object,数据访问对象 DAO是一个软件设计的指导原则,在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象 ...
- Padrino 博客开发示例
英文版出处:http://www.padrinorb.com/guides/blog-tutorial 楼主按 拿作者自己的话说:Padrino(谐音:派骓诺)是一款基于Sinatra的优雅的Web应 ...
- Castle ActiveRecord学习实践
Castle是针对.NET平台的一个开源项目,从数据访问框架ORM到IOC容器,再到WEB层的MVC框架.AOP,基本包括了整个开发过程中的所有东西,为我们快速的构建企业级的应用程序提供了很好的服务. ...
- ActiveRecord的生命周期
ActiveRecord的生命周期,通过方法重写和插入我们需要的业务逻辑来达到我们对程序的控制. 示例: 1,beforeSave() public function beforeSave($inse ...
- Castle ActiveRecord学习(三)数据映射及特性描述
Model中的Demo: using Castle.ActiveRecord; using Castle.ActiveRecord.Queries; using System; using Syste ...
- Castle ActiveRecord学习(六)数据验证
参考.来源:http://www.cnblogs.com/Terrylee/archive/2006/04/13/374173.html https://github.com/castleprojec ...
随机推荐
- 开源的库RestSharp轻松消费Restful Service
现在互联网上的服务接口都是Restful的,SOAP的Service已经不是主流..NET/Mono下如何消费Restful Service呢,再也没有了方便的Visual Studio的方便生产代理 ...
- [转] C/C++中printf和C++中cout的输出格式
原文地址 一. Printf 输出格式 C中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型,其中方括号[]中的项为可选项.各项的意义介绍如下:1.类型类型字符用以表示输出数 ...
- 【jQuery】:not选择器的说明和:checked选择器的使用
1.:not选择器的说明使用 先给出一下例子: $(".form1 :not(input[name='category'])") 这个 能实现 获取到from1表单中除了input ...
- 通过idea 打包 spring maven项目打包为可执行jar包
用assembly打包一直报错: shangyanshuodeMacBook-Pro:target shangyanshuo$ java -jar jobscrawler-1.0-SNAPSHOT-j ...
- [Functional Programming 101] Crocks.js -- when to use map and when to use chain?
As a beginner of Crocks.js, it was a problem for we to figure out when to use .map() and when to use ...
- TestNG+ReportNG+Maven优化测试报告
转载:https://www.cnblogs.com/hardy-test/p/5354733.html 首先在eclipse里面创建一个maven项目,具体要配置maven环境,请自行百度搭配环境. ...
- Unity多媒体展示项目经验分享-ImageEffect+动态绑定
Unity多媒体展示项目经验分享-ImageEffect+动态绑定+网络通信 <ignore_js_op> “海尔科技展墙”是去年年初我们为上海家电博览会制作的一个多媒体展项,有限的工期以 ...
- Session机制详细介绍
Session机制详细介绍
- 安卓File类汇总
File类 构造函数 參数 File(File dir,String name) File制定构造的新的File对象的路径.而String制定新的File名字 File(String path) St ...
- android 内部类的优化
developer.android.com 文档中有一篇关于性能的文章,里面提到了内部类的使用.文章建议"对于私有内部类 使用 包訪问权限取代私有权限訪问", 这里说的是在内部类訪 ...