PHP-木有biggerFly1、用匿名函数让表单数据处理变得炫酷
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP-木有biggerFly1、用匿名函数让表单数据处理变得炫酷,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3284字,纯文字阅读大概需要5分钟。
内容图文
![PHP-木有biggerFly1、用匿名函数让表单数据处理变得炫酷](/upload/InfoBanner/zyjiaocheng/209/32241e731e6e47fe9301b3ba85ebb70a.jpg)
需求
接收表单数据,格式化处理它们,然后插入数据库
模拟
假设表单提交过来的数据为
$postData = [ ['name' => 'name1', 'createtime' => '2000-01-01', 'email' => 'email1@example.com' ], ['name' => 'name2', 'createtime' => '2000-02-01', 'email' => 'email2@example.com' ], ['name' => 'name3', 'createtime' => '2000-03-01', 'email' => 'email3@example.com' ], ['name' => 'name4', 'createtime' => '2000-04-01', 'email' => 'email4@example.com' ],];
正常做法
function format( $data ) { $format = $data; $format['createtime'] = strtotime( $data['createtime'] ); return $format;}
当然上面的也可以换成引用,引用可以减少内存的开销哦~
木有biggerFly
(剧本载入中……)木木:我不想写那么多format方法,这次提交表单要写一个format,下次另一个地方也要一个format,每次都定义一个,好麻烦啊,有没有。如果还有一个验证用的validate方法,或者别的abc方法……天啊,饶了我吧biggerFly:要不试一试匿名函数?木木:哈?匿名函数是什么鬼?biggerFly:匿名函数传送门在此,走你木木:好晕,你直接告诉我,要怎么做吧……biggerFly:
class A { public $data = NULL; public $format = NULL; /** * 执行 */ public function run() { foreach ( $this->data as $key => &$data ) { if ( is_callable( $this->format ) ) { $method = $this->format;//必须赋值给一个变量,不然会报错:format方法不存在 $method( $data ); } } } /** * 设置data数组 * @param array $data */ public function setData( $data ) { $this->data = $data; return $this; } /** * 获取data数组 * @return array */ public function getData() { return $this->data; }}
木木:所以呢?怎么用biggerFly:以模拟为例子
$a = new A();$a->setData( $postData );$a->format = function( &$data ) { $data['createtime'] = strtotime( $data['createtime'] );};$a->run();var_dump( $a->getData() );
运行结果略,这里会把二维数组$postData的createtime的日期格式转化为时间戳biggerFly:通过这样的方式,只要在A类里定义一些常用的方法,就可以写不需要重复定义函数,比如一些常用的规则解释
- is_callable传送门。如果严谨一点,可以加一个is_array的判断,确保是函数
- 这样可以省去很多额外的函数定义,一些常用的比如format、validate方法直接内嵌在A类里就好了
- 同时每一个需要格式化表单数据的脚本可能就少引用了很多类,比如,如果你要检测字符串格式是不是邮箱,你可能要在每个表单处理的地方调用一个String类,有了A类,你就可以只需要一个A,把所有这种引用的写在A里就好了
- 这些处理表单数据的函数本来就是一次性的(这些format方法难道还适用别的表单数据处理咩?),所以,用匿名函数也比较符合它的含义
- 不觉得高大上咩?
其他
- 通过这样的处理,你可能还可以写出如下类似的代码,这里就不把实现写出来了,对着格式很容易就可以完成的
$a->validate = function( &$data ) {$data['email'] = array( 'email', 'unique' );$data['name'] = array( 'required', 'unique' );$data['createtime'] = array( 'datetime', function($time) { if ( strtotime( $time ) >= time() ) { return false; } else { return true; } } );};
- 匿名函数在php原生函数里经常出现,它们也被叫做回调函数,想要了解更多匿名函数,建议参考手册以及相关评论匿名函数```
传送门
往期PHP-数组我的小说灵音万年
内容总结
以上是互联网集市为您收集整理的PHP-木有biggerFly1、用匿名函数让表单数据处理变得炫酷全部内容,希望文章能够帮你解决PHP-木有biggerFly1、用匿名函数让表单数据处理变得炫酷所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。