龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

模型层 半仿 Varien_Object 模型基类

时间:2015-03-20 15:22来源:网络整理 作者:网络 点击:
分享到:
半仿 Varien_Object 模型基类 标记:初学作品,敬请忽略。受 NP新页 指点半模仿 Varien_Object 写的PHP模型基类。介绍很长,见http://stu.szu.edu.cn/blog-dev/open-source/database-model-base.html**使用范例(子

标记:初学作品,敬请忽略。受 NP新页 指点半模仿 Varien_Object 写的PHP模型基类。介绍很长,见http://stu.szu.edu.cn /blog-dev/open-source/database-model-base.html

使用范例(子类)

<?php
namespace Model\DataEntity;
use StuCampus\DataModel\DbRecord;

/**
 * 新闻分类
 * 
 * @author tonyseek
 * 
 * @property int $id
 * @property string $name
 * @property string $linkAddress
 * @property int $layer
 * @property int $parentId
 * @property Model\DataEntity\NewsCategory $Parent
 */
class NewsCategory extends DbRecord
{
    # 配置信息

    /**
     * 字段信息
     * 
     * @var array
     */
    protected static $_dbColumns = array(
        'id'          => array('field'=>'CategoryID',   'type'=>self::TYPE_INTEGER, 'length'=>4,
                               'auto'=>true, 'unique'=>'true'),
        'name'        => array('field'=>'CategoryName', 'type'=>self::TYPE_STRING,  'length'=>60),
        'parentId'    => array('field'=>'ParentID',     'type'=>self::TYPE_INTEGER, 'length'=>4),
        'linkAddress' => array('field'=>'LinkAddress',  'type'=>self::TYPE_STRING,  'length'=>600),
        'layer'       => array('field'=>'Layer',        'type'=>self::TYPE_INTEGER, 'length'=>2),
    );

    /**
     * 所属数据表
     * 
     * @var string
     */
    protected static $_dbTable   = 'NewsCategory';

    /**
     * 所属数据库
     * 
     * @var string
     */
    protected static $_database  = 'default';

    # 受保护成员和私有成员

    /**
     * 父级分类
     * 
     * @var \Model\DbObject\NewsCategory
     */
    protected $_parent = null;

    # 成员方法

    /**
     * 获取父级的 NewsCategory 对象 (映射到动态属性Parent)
     * 
     * @return Model\DataEntity\NewsCategory
     */
    protected function getParent()
    {
        if (null === $this->_parent) {
            $this->_parent = new self;
            $this->_parent->load($this->parentId);
        }
        return $this->_parent;
    }
}

调用范例

<?php
$newsCategory = new NewsCategory;
$newsCategory->load(1);
echo $newsCategory->name;
$saveExample = new NewsArticle;
$saveExample->name = 'xxx';
try {
    $saveExample->save();
} catch (PDOException $ex) {
    // 视图提示数据库错误
} catch (Exception $ex) {
    // 视图提示未知错误
}

其他范例

$dbh = DbHandler::factory('default');
DbConnector::factory('default')->transationExecute(function() use ($dbh) {
    $dbh->sqlString = 'insert xxx';
    $dbh->setParam(':xx', $vars, PDO::PARAM_BOOL);
    $dbh->execute();
    $dbh->cleanParams(); // 这句其实可以不写,除非调用的是$dbh->execute(true);否则参数会自动清空
    $dbh->sqlString = 'select ***';
    $result = $dbh->getDataArray();
    var_dump($result);
    // 该回调函数中执行的操作在事务中,异常时会自动回滚,无异常会自动提交
});
精彩图集

赞助商链接