定义和调用函数:
概念:将一些重复使用到的功能写在一个独立的代码块中,在需要时单独调用(封装方法)。
语法格式:
function fun_name($str1,$stgr2…$strn){
fun_body;
}
参数说明:
function:为声明自定义函数时必须使用到的关键字。
fun_name:为自定义函数的名称。
$str1…$strn:为函数的参数。
fun_body:为自定义函数的主体,是功能实现部分。
调用函数:当函数被定义好后,所要做的就是调用这个函数。调用函数的操作十分简单,只需要引用函数名并赋予正确的参数即可完成函数的调用。
<?php
function multiply($num=100){
return "$num * $num = ".$num * $num;
}
echo multiply(10);
?>
函数间传递参数:
在调用函数时,需要向函数传递参数,被传入的参数称为实参,而函数定义的参数为形参。参数传递的方式有按值传递、按引用传递和默认参数3种。
1.按值传递方式:将实参的值复制到对应的形参中,在函数内部的操作针对形参进行,操作的结果不会影响到实参,即函数返回后,实参的值不会改变。function metric( $m ){ //定义一个函数
$m = $m * 5 + 10;
echo "在函数内:\$m = ".$m; //输出形参的值
}
$m = 1;
metric( $m ) ; //传值:将$m的值传递给形参$m
echo "<p>在函数外:\$m = $m<p>" ; //实参的值没有发生变化,输出m=1
2.按引用传递方式:按引用传递就是将实参的内存地址传递到形参中。这时,在函数内部的所有操作都会影响到实参的值,返回后,实参的值会发生变化。引用传递方式就是传值时在原基础上加&号即可。
3.默认参数:还有一种设置参数的方式,即可选参数。可以指定某个参数为可选参数,将可选参数放在参数列表末尾,并且指定其默认值为空。
<?php
function tax($price, $tax=""){
$price=$price + ($price * $tax);
echo "价格: $price<br>";
}
tax(100,0.25); //为可选参数赋值0.25
tax(100); //没有给可选参数赋值
?>
从函数中返回值:
通常,函数将返回值传递给调用者的方式是使用关键字return。return将函数的值返回给函数的调用者,将程序控制权返回到调用者的作用域。return语句只能返回一个参数,也即只能返回一个值,不能一次返回多个。如果要返回多个结果,就要在函数中定义一个数组,将返回值存储在数组中返回。
变量函数:
php支持变量函数的概念。这意味着如果一个变量名后有圆括号,php 将寻找与变量的值同名的函数,并且将尝试执行它。除了别的事情以外,这个可以被用于实现回调函数,函数表等等。变量函数不能用于语言结构,例如 echo(),print(),unset(),isset(),empty(),include(),require() 以及类似的语句。需要使用自己的外壳(包装)函数来将这些结构用作变量函数。
function bar($arg = ''){
echo "In bar(); argument was '$arg'./n";
}
$func = 'bar';
$func('test');
对函数的引用:
引用不仅可用于普通变量、函数参数,也可作用于函数本身。
function &plus(){ //别忘了加“&”
static $num =0; //定义一个静态的变量'$num'
$num++;
return $num;
}
$n = plus();
echo $n.'<br>'; //这一行输出结果是1
echo plus().'<br>'; //这一行输出结果是2
$n = &plus();
echo $n.'<br>'; //这一行输出结果是3
$n = 6;
echo plus().'<br>'; //这一行输出结果是7
取消引用:
当不再需要引用时,可以取消引用。取消引用使用unset()函数,它只是断开了变量名和变量内容之间的绑定,而不是销毁变量内容。
取消引用后对原变量没有任何影响。
$num = 1234; //声明一个整型变量
$math = &$num; //声明一个对变量$num的引用$math
echo "\$math is: ".$math."<br>"; //输出引用$math
unset($math); //取消引用$math
echo "\$math is: ".$math."<br>"; //再次输出引用
echo "\$num is: ".$num; //输出原变量
书写规范:
关键字,小括号,函数,运算符
不要把小括号和关键字紧贴在一起,要用空格隔开它们。如:
if ($expr){ //if和“(”之间有一个空格
…
} 运算符与两边的变量或表达式要有一个空格。
while ($boo == true){ //$boo和“==”,true和“==”之间都有一个空格
…
}
当代码段较大时,上、下应当加入空白行,两个代码块之间只使用一个空行
方法中的参数命名
使用驼峰命名法,也可使用下划线命名法
如以下代码:
class EchoAnyWord{
function echoWord($firstWord,$secondWord){
…
}
}
全局常量
常量/全局常量,应该全部使用大写字母,单词之间用'_'来分隔,使大小写敏感。如:
define('DEFAULT_NUM_AVE', 90);
define('DEFAULT_NUM_SUM', 500);