PHP中使用匿名函数操作数据库的例子
发布:smiling 来源: PHP粉丝网 添加日期:2021-04-26 17:18:18 浏览: 评论:0
这篇文章主要介绍了PHP中使用匿名函数操作数据库的例子,本文直接给出类的代码、使用例子、继承例子,需要的朋友可以参考下,代码如下:
- Base dao class illustrating the usefulness of closures.
- * Handles opening and closing of connections.
- * Adds slashes sql
- * Type checking of sql parameters and casts as appropriate
- * Provides hook for processing of result set and emitting one or more objects.
- * Provides hook for accessing underlying link and result objects.
- <?php
- define("userName","root");
- define("password","root");
- define("dbName","ahcdb");
- define("hostName","localhost");
- class BaseDao {
- function getConnection() {
- $link = mysql_connect(hostName, userName, password);
- if (!$link)
- die("Could not connect: " . mysql_error());
- if (!mysql_select_db(dbName))
- die("Could not select database: " . mysql_error());
- return $link;
- }
- function setParams(& $sql, $params) {
- if($params != null)
- $sql = vsprintf($sql, array_map(function($n) {
- if(is_int($n))
- return (int)$n;
- if(is_float($n))
- return (float)$n;
- if(is_string($n))
- return "'".mysql_real_escape_string($n)."'";
- return mysql_real_escape_string($n);
- }, $params));
- }
- function executeQuery($sql, $params, $callback = null) {
- $link = $this->getConnection();
- $this->setParams($sql, $params);
- $return = null;
- if(($result = mysql_query($sql, $link)) != null)
- if($callback != null)
- $return = $callback($result, $link);
- if($link != null)
- mysql_close($link);
- if(!$result)
- die("Fatal Error: Invalid query '$sql' : " . mysql_error());
- return $return;
- }
- function getList($sql, $params, $callback) {
- return $this->executeQuery($sql, $params, function($result, $link) use ($callback) {
- $idx = 0;
- $list = array();
- while ($row = mysql_fetch_assoc($result))
- if($callback != null)
- $list[$idx] = $callback($idx++, $row);
- return $list;
- });
- }
- function getSingle($sql, $params, $callback) {
- return $this->executeQuery($sql, $params, function($result, $link) use ($callback) {
- if ($row = mysql_fetch_assoc($result))
- $obj = $callback($row);
- return $obj;
- });
- }
- }
- class Example {
- var $id;
- var $name;
- function Example($id, $name){
- $this->id = $id;
- $this->name = $name;
- }
- function setId($id){
- $this->id = $id;
- }
- }
- class ExampleDao extends BaseDao {
- function getAll(){
- return parent::getList("select * from nodes", null, function($idx, $row) {
- return new Example($row["id"], $row["name"]);
- });
- }
- function load($id){
- return parent::getSingle("select * from nodes where id = %1\$s", array($id), function($row) {
- return new Example($row["id"], $row["name"]);
- });
- }
- function update($example){
- return parent::executeQuery("update nodes set name = '' where id = -1", null, function($result, $link){
- return $result;
- });
- }
- function insert(& $example){
- return parent::executeQuery("insert into nodes", null, function($result, $link) use ($example){
- $id = mysql_insert_id($link);
- $example->setId($id);
- return $result;
- });
- }
- }
- $exampleDao = new ExampleDao();
- $list = $exampleDao->getAll());
- $exampleObject = $exampleDao->load(1));
- $exampleDao->update($exampleObject);
- ?>
Tags: PHP匿名函数
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)