专注于WEB技术的IT博客

windframework的数据操作探讨

时间:2013-02-22分类: phpwind浏览:3200
分享到:

在原生态的php+mysql开发中,在对数据库操作前需要链接数据库,实例化一个数据操作句柄,然后我们就可以对数据进行查询、添加和删除等操作了。那么在windframework框架中是如何获取一个实际的数据库操作句柄呢?下面将围绕这个问题作一些简单的探讨。


一般来说,框架的数据操作由数据模型层来处理,前面的WindFramework框架的项目部署已对windframework的部署作过介绍,现在以windframework自带的blog为例,blog的用户模型类为UserService.php,负责对数据查询和添加等处理,以供控制器IndexController.php调用。打开\blog\service\UserService.php,看下面的代码片断:

/**      
     * 用户注册服务      
     *       
     *@param UserForm $userInfo      
     *@return boolean      
     */
    public function register($userInfo) {      
        $db = $this->_getConnecion();      
        $stmt = $db->createStatement('SELECT * FROM user WHERE username=:username');      
        if ($stmt->getOne(array(':username' => $userInfo->getUsername()))) $this->showMessage('该用户已经注册.');//绑定参数,执行SQL语句,并返回一行查询结果      
        return $db->execute(//执行一条sql语句 同时返回影响行数      
            "INSERT INTO user SET " . $db->sqlSingle(//过滤数组值并返回(insert/update)sql语句形式      
                array('username' => $userInfo->getUsername(), 'password' => $userInfo->getPassword())));      
    }      
             
    /**      
     * @return WindConnection      
     *工厂类职责:加载组件配置并创建并管理组件对象作用域以及生命周期.通过组件工厂的方式创建组件对象,简化了组件的创建过程,统一了组件的管理接口并且具有很好的可扩展性.      
     *这里加载了wind/db目录的组件      
     */
    private function _getConnecion() {//返回实际的数据库操作句柄      
             
        return Wind::getApp()->getWindFactory()->getInstance('db');//通过工厂类WindFactory实例化一个数据库操作对象db      
    }      
             
}

由上面的代码可以知道,涉及到数据的查询如“ $db->createStatement(...)",数据的添加如"$db->execute(...)"都是通过 $db操作的。而变量$db是由"_getConnecion() "方法获取的返回的实际的数据库操作句柄,通过$db,我们就可以对数据进行存取操作了。


由此我们知道,在涉及数据的存取操作前,都需要获取一个数据库操作句柄$db,而这个句柄是通过工厂类windframework\wind\base\WindFactory.php的方法getInstance('db')加载组件'db'并创建对象实例。组件'db'(位置是目录windframework\wind\db)包函了许多数据库操作类,这些类封装了许多数据操作方法并且这些方法在功能和安全方面作过优化处理。如上面代码中的“getOne(...)”,其功能就是返回一条查询语句,更多功能方法可以到组件包db中的类去查找。

 
 

猜你喜欢
WindFramework框架的项目部署(二)
WindFramework框架的项目部署(二)
WindFramework框架的项目部署
除非注明,本文首发网志博客,欢迎转载!转载请注明本文地址:http://w3note.com/web/83.html,谢谢。
  • 评论
  • 赞助本站