1.函数的定义
函数定义的语法形式为:
function 函数名()
{
函数体
}
PHP中对用户自定义函数的函数名有如下要求:
l 不能与PHP的内部函数同名
l 不能与PHP关键字同名
l 不能以数字开头
l 不能包含点号“.”。
在PHP中不允许一次返回多个值,但我们可以利用返回一个数组的方法达到同时返回多个值的目的。
2.函数的调用
实际参数列表要与形式参数列表相对应(有默认参数时实际参数还要与默认参数对应)。如果实际参数比形式参数多,多余的参数会被自动舍弃;如果实际参数比形式参数少,实际参数会被一一填入形式参数中,不足部分以空参数代替。
3.函数的参数传递
①值传递
所谓值传递,就是将实际参数的值拷贝到形式参数中,然后由形式参数参与函数内部的计算,函数调用结束后,实际参数的值不会发生改变。
②引用传递
如果要实现形式参数改变时实际参数也发生相应改变,就要使用引用传递的方式了。实现参数的引用传递有两种方法:
l 在函数定义的时候,在形式参数前面加上“&”符号,例如:
function fun(&$Var1){…}
以后在调用函数fun()时就会默认采用引用传递了。
l 函数调用的时候,在实际参数前面加上“&”符号,例如:
function fun($Var1){…}
fun(&$Var2);
如果形式参数$Var1的值在函数中发生改变,实际参数$Var2的值也会发生相应的改变。
③默认参数
PHP还支持与C++中类似的默认参数,即在函数定义时可以为一个或多个参数指定默认值。
4.可变函数
在PHP的某个代码段中,如果某一变量的值与一个函数同名时,则在该代码段中可以使用该变量代替函数名来调用函数,调用方法为在变量名后加上括号及函数参数“(…)”。
例如:
function fun(){…}
$Var=”fun”;
$Var();
可变函数与普通函数调用时最大的区别就在于可变函数前面的“$”符号,有此符号,系统就会认为是可变函数。
注意:如果写成$Var=”fun()”,则“$Var”只是一个普通字符串而已,再调用语句“$Var;”不会实现fun()函数的功能。
5.三个与不定参数相关的函数:
这3个函数都只能在函数中调用,在函数之外使用会产生出错信息。
①int func_num_args(void)
这个函数的作用是返回传入参数的个数。
②int func_get_arg(int arg_num)
这个函数将返回第arg_num个参数值,传入的参数下标从0开始,如果越界,系统会报错,并返回False。
③int func_get_args(void)
这个函数的作用是返回一个包含当前函数所有参数的数组。
6.PHP中类的定义
类中成员变量的定义方法为:“var 变量名;”,成员函数与一般函数的定义方法相同。
类一旦定义之后,系统会自动为其指定一个$this变量,代表类自身。
注意:如果成员函数中要使用类中的成员变来那个或其他成员函数,不能直接引用,要用“$this->变量名”或“$this->函数名”。
每个类一般还有一个构造函数,用于类的初始化。
7.类的封装性
类中的属性不能由类的实例化对象直接访问,只能通过成员函数来访问。
8.类中的构造函数
构造函数是类中一个特殊的函数,这个函数的函数名与类名相同,而且在对象生成时会自动调用。
构造函数可以接收参数,这样可以在对象实例化时指定初始化的值。
9.类的继承性
一个类在继承其他类时,可以继承其中所有的属性和方法,这种继承其他类的类就是派生类,被继承的类叫父类。PHP中继承类要使用extends关键字,使用方法为:
Class 父类名 extends 子类名
注意:PHP中不支持多重继承。
派生类通常也需要有自己的构造函数,因为父类中的构造函数在派生类中只是一个普通函数,当派生类对象生成时并不会自动执行。
10.PHP中类的多态性
当派生类中某个函数的函数名与其父类中某个函数的函数名重复时,系统在派生类对象中会自动选用派生类中的函数,这就时类的多态。
之类继承父类时,在之类中重新对父类函数加以定义,而不改变函数名,就实现了类的多态。