`

增强型的FLEA_Db_TableDataGateway,提供按字段名称操作的功能

阅读更多

<?php
if (!PHP5){
	die('Helper_Model Must PHP5 Support!');
}
/**
 * Helper_Model 是 FLEA_Db_TableDataGateway 的增强类
 *
 */
class Helper_Model extends FLEA_Db_TableDataGateway{
	
	//魔术方法 提供 按 字段名称 操作 数据记录的功能 
	function __call($funcname,$args){
		//		
		//findBy		
		if (preg_match("/^findBy*/i",$funcname)){
			$fieldName = preg_replace('/^findBy*/i','',$funcname);
			return $this->findBy($fieldName,$args[0]);				
		}
		//findAllBy
		else if (preg_match("/^findAllBy*/i",$funcname)){			
			$fieldName = preg_replace('/^findAllBy*/i','',$funcname);
			return $this->findAllBy($fieldName,$args[0]);
		}
		//removeBy
		else if (preg_match("/^removeBy*/i",$funcname)){			
			$fieldName = preg_replace('/^removeBy*/i','',$funcname);
			return $this->removeBy($fieldName,$args[0],$args[1]);
		}
		//updateBy
		else if (preg_match("/^updateBy*/i",$funcname)){			
			$fieldName = preg_replace('/^updateBy*/i','',$funcname);
			return $this->updateBy($fieldName,$args[0],$args[1]);
		} else {
			log_message(get_class($this)." 类无此方法: {$funcname}", 'error');
			throw new FLEA_Exception(get_class($this) .  " 没有这个方法: {$funcname}");
		}
	}
	
	/**
	 * 判断字段是否存在
	 *
	 * @param string $field
	 * @return bool
	 */
	function fieldIsExist($field){
		if (in_array(strtoupper($field),$this->fields)){
			return true ;
		} 
		log_message("表 {$this->qtableName} 无此字段: [{$field}]", 'debug');
		dump("字段: [{$field}] 不存在","表 {$this->qtableName}");
	}
	
	/**
	 * 根据字段名称和值查找一条记录
	 *
	 * @param string $field
	 * @param string $value
	 * @return array
	 */
	function findBy($field,$value){

		if ($this->fieldIsExist($field))
			return $this->find(array($field => $value));			
	}
	
	/**
	 * 根据字段名称和值查找所有记录
	 *
	 * @param string $field
	 * @param string $value
	 * @return array
	 */
	function findAllBy($field,$value){
		if ($this->fieldIsExist($field))
			return $this->findAll(array($field => $value));
	}
	
	/**
	 * 删除满足条件且符合指定字段的值的记录 成功返回删除的记录总数,失败返回 0
	 *
	 * @param string $field
	 * @param string $value
	 * @return int
	 */
	function removeBy($field,$value,$conditions=null){
		if ($this->fieldIsExist($field)){
			if(empty($conditions)|| !is_array($conditions))
				$conditions = array();
			$conditions[$field] = $value ;
			return $this->removeByConditions(array($field => $value));
		}
						
	}
	
	/**
	 * 更新满足条件且符合指定字段的值的记录 成功返回更新的记录总数,失败返回 false
	 *
	 * @param string $field
	 * @param string $value
	 * @param array $conditions
	 * @return int|boolean
	 */
	function updateBy($field,$value,$conditions){
		if ($this->fieldIsExist($field)){
			$row = array($field => $value);
			return $this->updateByConditions($conditions, $row);
		}			
	}
}
?>
 
1
1
分享到:
评论
3 楼 vb2005xu 2009-10-23  
    
/**
 * 向视图发一个缓存消息
 * 此方法应该被扩充,增加作用域的概念[页面/全局]
 * @param string $msg
 */
function flashMsg($msg=null){
	if (empty($msg))
		return flashNotice('flashMsg',null) ;
	flashNotice('flashMsg',$msg) ;		
}
/**
 * 扩展向视图发一个缓存消息 方法,添加访问计数器
 *
 * @param string $key
 * @param string $msg
 * @return string
 */
function flashNotice($key,$msg){
	$key = trim($key);
	//初始化验证
	if (!isset($_SESSION['flashNotice'])){
		$_SESSION['flashNotice'] = array();	
	}	
	
	// 空消息说明要求返回储存的msg,并对计数变量减一
	if (empty($msg)) {
		
		if (isset($_SESSION['flashNotice'][$key])){			
			if ($_SESSION['flashNotice'][$key]['count'] == 0){
				unset($_SESSION['flashNotice'][$key]);
				return null ;
			}
			$_SESSION['flashNotice'][$key]['count'] -= 1 ;
			return $_SESSION['flashNotice'][$key]['msg'];
		}
		return null ;
	}
	//非空消息说明往里蓄值
	if (!isset($_SESSION['flashNotice'][$key])){
		$_SESSION['flashNotice'][$key] = array(
			'count' => 1 ,
			'msg'	=> $msg
		);
	} else {
		$_SESSION['flashNotice'][$key] = array(
			'count' => $_SESSION['flashNotice'][$key]['count'] += 1 ,
			'msg'	=> $msg
		);
	}
}
2 楼 vb2005xu 2009-10-22  
http://timheuer.com/blog/archive/2007/08/24/silverlight-and-php-silverlight-anywhere-flickr.aspx
1 楼 vb2005xu 2009-10-22  
在PHP的客户端使用Silverlight
http://tomasp.net/blog/php-in-silverlight.aspx
http://www.infoq.com/cn/news/2008/01/Silverlight-PHP

相关推荐

    Fleaphp常见函数功能与用法示例

    1. `FLEA_Db_TableDataGateway::update()` 这个函数用于更新指定ID的记录。在示例中,我们看到如何通过传递一个包含字段和新值的关联数组来修改记录。例如,更新uid为22的记录,将name字段设为"11",pass字段设为...

    flea_market-master_个性化购物网站_tide1tv_presseqr_

    【标题】"flea_market-master_个性化购物网站_tide1tv_presseqr_" 指的是一个基于开源项目实现的个性化购物网站系统,特别针对跳蚤市场进行了优化设计。这个项目可能结合了“tide1tv”和“presseqr”两个技术组件,...

    fleaphp常用方法分页之Pager使用方法

    // 创建一个TableDataGateway对象,例如:$table = new FLEA_Db_TableDataGateway('wp_posts'); // 然后使用这个对象作为$source参数 // 初始化分页 $pager = new FLEA_Helper_Pager($table, $currentPage, $...

    fleaphp crud操作之findByField函数的使用方法

    在这个例子中,我们创建了一个名为`Teble_Class`的类,继承自`FLEA_Db_TableDataGateway`,然后设置了数据库连接信息,并加载了所需类。`findByField`函数被用来查询`wp_posts`表中`ID`为4的记录,按照`post_date`...

    ajax实时任务提示功能的实现代码第1/2页

    在本项目中,`Dao_TaskTable` 类扩展了 `FLEA_Db_TableDataGateway`,这是DAO层的一部分,用于与数据库交互。 3. **日期处理**:在数据库表`task`中,有一个`date`字段,类型为`datetime`,用于存储任务的日期和...

    fleamarket_sample_kagawa-a-master.rar

    【标题】"fleamarket_sample_kagawa-a-master.rar" 指的可能是一个开源项目或软件示例,其核心是围绕“fleamarket”(跳蚤市场或二手交易)的应用场景,可能是一个在线市场平台的代码库。"Kagawa-a-master"可能代表...

    fleamarket_7.13.76.5.apk

    fleamarket_7.13.76.5.apk

    FleaMarket.zip

    "FleaMarket.zip" 是一个包含源代码的压缩文件,很可能是一个Android或Java项目的结构。从提供的文件列表来看,我们可以分析出这个项目的一些关键组成部分和开发环境的设置。 1. **gradlew.bat**: 这是一个批处理...

    Point Grey Flea3系列高速VGA超紧凑型相机产品手册.pdf

    该系列相机还具备增强型光电隔离GPIO(通用输入输出)功能,具有板载帧缓冲区,非挥发性用户数据存储以及新触发模式。Flea3相机支持包括像素合并和感兴趣区域(ROI)在内的多种模式,并具有白平衡、增益控制、快门...

    Fleaphp 常用方法.doc

    这个函数用于获取数据库访问对象,返回一个`FLEA_Db_Driver_Prototype`实例。这个对象提供了统一的数据库访问接口,无论你使用的是哪种数据库系统。`$dsn`参数可以是数组或字符串,用于定义数据库连接信息。例如,...

    FLEA框架中文API

    最近学了FLEA,觉得还行,但是资料比较少,发现很多朋友找不到FLEA的API,现在把他共享出来,供大家学习参考!

    fleamarket_sample_79a

    您可能要讲的内容: Ruby版本系统依赖配置数据库创建数据库初始化如何运行测试套件服务(作业队列,缓存服务器,搜索引擎等) 部署说明...FLEAMARKET DB设计用户テーブル柱子类型选项昵称细绳null:假电子邮件细绳...

    Fleaphp框架使用规范收集.pdf

    - 数据访问层(Data Gateway):在MVC架构中,数据访问层封装了与数据库交互的所有细节,Fleaphp框架使用TableDataGateway类来实现这一点,支持CRUD(创建、读取、更新、删除)操作。 - 视图渲染:框架支持Smarty...

    DOJO+FLEA 企业门户网站

    而FLEA可能是指一个特定的企业级框架或者解决方案,它与DOJO结合使用,可能是为了提供更全面的企业级功能,如权限管理、数据安全、工作流等。 【描述】中连续重复的标题表明这个项目或系统非常重视DOJO和FLEA的集成...

    com.taobao.fleamarket

    com.taobao.fleamarket最新包,用于淘宝二手android客户端应用。

    fleamarket_sample_kagawa-e

    项目テーブル柱子类型选项姓名细绳null:false,add_index Seller_id 整数null:false,foreign_key:{to_table:users} 价格整数null:假购买整数null:假Buyer_id 整数外键:{to_table:用户} 解释文本null:假...

Global site tag (gtag.js) - Google Analytics