1. 代码重用
1.1 代码重用的好处
1) 成本
在软件生命周期中,相当的时间是用在维护、修改、测试和文档化记录上,而不是最初花在编码上的时间,所以应尽量限制所用到的代码行数,最常用的方法就是重新使用已有的代码。
2) 可靠性
如果一个模块代码已经使用了,可以认为它是已通过测试的。使用现存的成熟代码通常比新代码更可靠。
3) 一致性
系统的外部接口应该是一致的,包括用户接口和系统的外部接口。重复使用运行在系统其他部分的代码,所实现的功能就会达到一致。
1.2 包含文件
PHP提供了两个简单的函数require()和include(),允许重新使用任何类型的代码。通常这个文件可以包含任何希望在一个脚本中输入的内容,其中包括PHP、文本、HTML。
require()和include()几乎是相同的,只是在函数失败后,require()函数将给出一个致命错误,而include()只是给出一个警告。
require()函数和include()函数各有一个变体函数,分别是require_once()和include_once(),这两个函数的作用是确保一个包含的文件只能被引入一次。
1.3 页眉和页脚
如果希望在每个页面中都加入页眉和页脚,可以在配置文件php.ini中的auto_preprend_file和auto_append_file的选项设置。使用这些指令包含的文件可以像使用include()语句包含的文件一样,当文件不存在时,将产生一个警告。
2. 使用函数
2.1 函数调用
调用函数最简单和示例:
function_name();
以上代码将调用一个名为function_name的函数且不需要任何输入参数。然而,大多数函数都需要一个或更多的参数。我们通过将数据或变量名放在函数名称后面的括号内,从而以参数形式传给函数,例如:
function_name('param');
参数可以是任何数据类型,但特定的函数通常会要求特定的数据类型。
如果调用一个并不存在的函数,会得到一个错误信息。如果看到这个错误信息,需要检查函数名是否正确或这个函数是否存在于所用的PHP版本中。
函数调用将不区分大小写,所以调用function_name()、FUNCTION_NAME()都是有效的,而且都将返回相同的结果。
2.2 定义函数
一个函数声明将创建一个新的函数,声明是以关键字function开始的,接下去给出函数名称和必要的参数,然后再给出调用这个函数时要执行的代码,例如:
function my_function() { echo "Hello World!";}
2.3 函数命名
函数命令具有如下几个限制:
1) 函数名称不能与现有函数重名。
2) 函数名称只能包含字母、数字、下划线。
3) 函数名称不能以数字开始。
2.4 使用参数
大部分函数需要一个或多个参数,参数允许将数据传给函数,例如:
function get_name($name) { echo "Hello $name";}
用户定义函数可以有多个参数和可选参数,可选参数需要在函数中为它们定义默认值,例如:
function get_name($name, $prefix = 'Mr.') { echo "Hello $prefix $name";}
通常,函数获取参数的方式是值传递,当传递一个参数时,一个新的并且包含该传入值的变量被创建,它是原来那个变量的副本。可以以任意方式修改它,但函数外部原来变量的值是不会改变的。
如果使用引用传递,在参数被传递给函数的时候,函数不会再创建一个新变量,而是函数获得一个原来变量的引用。可以通过在函数定义的参数名前加一个地址符'&'来指定参数的引用传递,例如:
function increment(&$value, $amount = 1) { $value = $value + $amount;}
2.5 返回
关键字return将终止函数的执行,如果return语句被执行了,函数中后续的代码将被忽略,例如:
function larger($x, $y) { if ($x >= $y) { return $x; } else { return $y; }}