首页 > php教程 > php手册 > 正文

PHP闭包特性应用:代替循环,提高代码性能。

WBOY
发布: 2016-06-13 11:29:58
原创
886 人浏览过

起因是看到了一个简单php上传脚本:http://www.nowamagic.net/librarys/veda/detail/1384

我重构了一下,主要是用匿名函数代替了foreach循环,利用了闭包的新特性,从而也提高了性能。需要注意的是闭包并不就完全等于匿名函数,闭包是通过匿名函数实现的,跟use关键字的使用有关。

记录下就当抛砖引玉了,毕竟随着php众多新特性的加入,我们程序员也要与时俱进不断优化代码,重构自身。
以下是重构后的php部分:

<span $img</span> = <span $_FILES</span>['img'<span ];
</span><span if</span> (<span $img</span><span )
{
    </span><span //</span><span 文件存放目录,和本php文件同级</span>
    <span $dir</span> = <span dirname</span>(<span __file__</span><span );

    </span><span array_walk</span>(<span $img</span>['tmp_name'], <span function</span> (<span $value</span>) <span use</span>(<span $dir</span>,<span $img</span><span )
    {    </span><span //</span><span 保证$img['tmp_name']和$img['name']中索引的对应</span>
        <span $filename</span> = <span $img</span>['name'][<span array_search</span>(<span $value</span>, <span $img</span>['tmp_name'<span ])];
        </span><span //</span><span 设置上传路径</span>
         <span $savepath</span>="<span $dir</span>\\<span $filename</span>"<span ;
         </span><span //</span><span 上传,并返回状态</span>
        <span $state</span> = <span move_uploaded_file</span>(<span $value</span>, <span $savepath</span><span );
        </span><span //</span><span 如果上传成功,预览</span>
        <span if</span>(<span $state</span><span )
        {
               </span><span echo</span> "<img  src='<span $filename</span alt="PHP闭包特性应用:代替循环,提高代码性能。" >' alt='<span $filename</span>' /> "<span ;
        }
    });
}</span>
登录后复制

 

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!