# 1.12 函数

之前在输出学生程序,用作文本渲染的时候,我们使用了check_score($score)这样的函数,用于封装功能。

大家应该有个初步的认识。函数,是一个运算过程,封装起来,多处调用。可以有效地使程序简洁起来,更富于可读性。

还是用实例让大家有个深入的了解。




sqlite数组类型 sql server数组定义_显式


function关键词声明,后面是函数的标识符get_bonus_goods,然后是形参$type_id。函数体内部,执行需要的运算。

然后,函数可以有返回值,也可以没有。上述例子,就有返回值,$row。根据顶部注释可以看到,返回的数组。如果是空,那就是[],如果有数据,那就是array结构。

再来看一个例子。


sqlite数组类型 sql server数组定义_数组_02


Laravel的helper函数。简单封装一下,调用reset返回数组的第一个值。因为reset名字不好记,使用head倒是直观许多。


sqlite数组类型 sql server数组定义_封装_03


判断是否windows平台。

大家看优秀的框架设计,有许多我们值得借鉴的地方。函数,要做最小化封装。功能尽量单一,可拆卸,灵活小巧。

尽量不要写一大堆代码,一大堆功能,严重依赖,一处用过,没有它用。那样的函数,不过是一堆代码,换个放的地方而已。

# 1.13 异常处理 try...catch...结构

程序运行中,对于出现的异常情况,应尽量捕捉,且能够有相应的处理流程,避免程序意外的发生。


sqlite数组类型 sql server数组定义_数组_04


如上述的程序,使用catch语句捕捉三种异常情况,一个是 zeroExecption,一个是 Execption,一个是 Error。单个对象在错误发生的时候被抛出。

当然我们也可以手动抛出一个异常用于显式终端程序。

throw new Execption('Have an error here');

我们再看一些具体的实例。


sqlite数组类型 sql server数组定义_数组_05


sqlite数组类型 sql server数组定义_sqlite数组类型_06


看上述例子,catch内捕捉到的异常,基本不做处理,而是让程序隐藏异常信息,继续往下进行。需要的地方显式 throw即可。


sqlite数组类型 sql server数组定义_封装_07


上面这个例子,是需要手动处理的异常,直接处理就是。

看框架,读代码,不如动手写一写,马上去实践吧。