用魔术方法实现对表单FORM的封装
来源:互联网 发布:安卓手机c语言编译器 编辑:程序博客网 时间:2024/06/07 07:23
我们知道struts中将表单的数据封装成为一个FORMBEAN ,并且能够使用validate的方法对表单数据进行服务端验证。我们能不能在php中实现呢,借助我们可爱的魔术函数当然可以实现,而且实现的更为简单。
代码如下:
<?php
/**
* 定义的虚拟FORM类
*/
class Form {
private $request;
/**
* 初始化FORM类
*/
public function Form() {
$this->request = $_POST;
}
/**
* 获取request
* @return Array
*/
public function getRequest() {
return $this->request;
}
/**
* 重设request
* @return array
*/
public function reset() {
foreach ($this->request AS $key => $value) {
$this->request[$key] = "";
}
return $this->request;
}
/**
* 转换函数名
* @param String $method
* @param String $type
* @return String
*/
private function lw_first ($method = "", $type = "get") {
$method = substr($method, strlen($type));
$first = substr($method, 0, 1);
return strtolower($first) . substr($method, 1);
}
/**
* 魔术函数
* @param mix
*/
public function __get($property) {
if (isset($this->request[$property])) {
return $this->request[$property];
}
return "";
}
/**
* 魔术函数
* @param mix
* @param array
*/
public function __set($property, $value) {
$this->request[$property] = $value;
}
/**
* 魔术函数
* @param String $method
* @param Array $arguments
*/
public function __call($method, $arguments) {
if (false !== strpos($method, "get")) {
$value = $this->lw_first($method, "get");
return $this->$value;
} else {
$name = $this->lw_first($method, "set");
$this->$name = (!empty($arguments)) ? $arguments[0] : "";
}
}
/**
* 析构函数
*/
public function __destruct() {
unset($this->request);
}
}
?>
调用方法
我们在控制器中,实例化这个form, 就可以通过,$form->getUsername();这样的方法访问参数了$_POST['username']
我们只要实现这个抽象类。并且实现validate()自己的方法 就可以把所有的请求封装成form,然后由控制器调用这个form的validate()方法进行服务端验证。
- 用魔术方法实现对表单FORM的封装
- 表单form的实现
- 用JavaScript实现form表单的数据提交--使用正则表达式对数据判断
- js中form表单的简单封装
- 两种阻止提交表单(form)的方法实现
- js实现a标签超链接提交form表单的方法
- js实现a标签超链接提交form表单的方法
- 使用ajax方法实现form表单的提交(附源码)
- FORM 表单的查询方法
- $.ajax() 方法中对data值进行封装。serializeJson() 可以是form表单,也可以是单个元素对象
- form表单中提取参数并封装成json对象的方法
- html form表单提交后不刷新不跳转的实现方法------巧妙地用iframe
- 封装性和魔术方法
- JS对form表单的验证
- js对表单form的操作
- 对模拟form表单的疑问
- 对form表单post的研究
- jquery 对form表单的动态操作
- C#农历
- 文章,记录按内容分页显示,根据文章内容按字数进行分页
- 基于“国共合作”本体的语义相关度量方法比较实验计划
- ftp命令
- 用C#写的字符串截取函数
- 用魔术方法实现对表单FORM的封装
- VB经验技巧(一)
- C#中字符串处理的一些自定义方法
- 几大网站使用的操作系统、Web服务器和开发语言
- 使用 Calendar 需要注意到的一点地方
- 复制功能跨浏览器实现
- C#中一种窗体消息分发机制(实在太像Delphi了)
- 我入股市后对经济全方位的一些思考
- [转]共享软件海外年获利15亿 作者月入甲壳虫一辆