【PHP】将“变量”转换为”可以引入的文件“以及错误的使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【PHP】将“变量”转换为”可以引入的文件“以及错误的使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2416字,纯文字阅读大概需要4分钟。
内容图文
【PHP】将“变量”转换为”可以引入的文件“以及 异常的使用槽吐吐,最近在看一本叫《代码简洁之道》的书,书中讲了如何让自己的代码变得容易读懂,受益匪浅。有兴趣的朋友可以看看。
PHPer很少使用异常,即时是公司里的大牛,也不见得会使用异常。更多情况下,异常仅仅被当作error code的另外一个实现体而已。我记得我在前面的博客里还说到过异常,貌似木有人支持啊。
想象一下:一个代码里出现了如下情况:
<?php if(($retCode = fun1()) == 0){ $html = "Hello,world"; if(($retCode = fun2()) == 0){ if(($retCode = fun3()) == 0){ }else{ //出错了 } }else{ //出错了 } }else{ //出错了 }
上面的代码,熟悉么?之前看discuz的源码时,有一段代码有类似的结构,这样写,代价确实很大,尤其是后面的人来读这段代码的时候。我们确实没有重构的习惯,使用异常重构,可以很好解决这个问题
<?php try{ fun1(); fun2(); fun3(); }catch(Exception_FUNC_1 $e){ //错误处理 }catch(Exception_FUNC_2 $e){ //错误处理 }catch(Exception_FUNC_3 $e){ //错误处理 }
是不是好点?还可以再优化么?
<?php try{ fun1(); fun2(); fun3(); }catch(Exception $e){ echo $e->getMessage(); } function fun1(){ throw new Exception("Your input is empty", 10001); }
好处是什么?
1. 你可以专注与正常的流程,而不用关心出错了会怎么办
2. 将错误的部分统一处理,返回错误、日志、回溯
3. 随意增加错误类型,因为本身是自定义,你不用维护一套error code
4. 代码结构清晰,维护代价低
5. 特有的类维护自己的异常,如:smarty、phpunit,出错了有自己的记录方式,与所处的系统无耦合
看个人习惯,我个人极力推荐
有这么一个需求:
我想将一个变量(可能为数组、字符串、数字),可以输出到文件里,使这个文件被别的php文件include后,使用这个变量,即:
<?php $a = array( 0 => 'abc', 1 => array( 'abc' => '2345' ) ); //输出到文件的内容是: { return array( 0 => 'abc', 1 => array( 'abc' => '2345' ) ); }
然后,下一个文件include后是:
$a = include("file.php");
它就拥有了这个数据了。
具体什么场合下用到,我们将内存中的数据放到硬盘中,除了serialize外,这也是一种方便的做法,因为不需要unserialize。不好的一点是:没法对对象、句柄做操作。
我是这么写的:
<?php class Code { /** * 将变量转化为字符串 * * @param mixed $var 仅包含字符串、数字、数组的变量 * @param string $pfx 前缀,输出的内容容易被读 * * @return string */ public function var2Str($var, $pfx = ''){ $str = ''; if(is_array($var)){ $str = "array(\n"; $pfx .= "\t"; foreach($var as $k => $v){ if(is_string($k)){ $k = "\"{$k}\""; } $str .= $pfx . "{$k} => " . $this->var2Str($v, $pfx) . ",\n"; } $str .= $pfx . ")"; }elseif(is_int($var) || is_float($var)){ $str = "{$var}"; }elseif(is_string($var)){ $str = "\"{$var}\""; } return $str; } }
可以试试~
内容总结
以上是互联网集市为您收集整理的【PHP】将“变量”转换为”可以引入的文件“以及错误的使用全部内容,希望文章能够帮你解决【PHP】将“变量”转换为”可以引入的文件“以及错误的使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。