方法(method)与函数非常类似,只不过方法是用来定义类的行为的。
与函数一样,方法可以接受输入参数,可以向调用者返回一个值。
方法的调用也与函数相同,只是在方法签名要加上调用方法的对象的名称,如下所示:
$object->method_name();
方法声明
可以使用与函数相同的语法创建方法。方法和一般函数之间唯一的区别是方法声明前面一般会有作用域描述符。一般语法如下:
scope function functionName()
{
//function body goes here
}
类的成员方法从本质上来讲也是一种函数,所以其存储结构也和常规函数一样,存储在zend_function结构体中。
对于一个类的多个成员方法,它是以HashTable的数据结构存储了多个zend_function结构体。
和前面的成员变量一样,在类声明时成员方法也通过调用zend_initialize_class_data方法,初始化了整个方法列表所在的HashTable。
在类中我们如果要定义一个成员方法,格式如下:
class NowaMagic {
public function show() {
echo 'Hello NowaMagic';
}
}
比如,名为calculateSalary()的公共方法如下:
public function calculateSalary()
{
return $this->wage*$this->hours;
}
在此例中,该方法通过使用 $this
关键字直接调用了类的两个字段:wage 和hours 。通过将两个字段的值相乘,计算工资,然后像函数一样返回结果。
但是注意,方法并不只限于操作类的字段,完全可以像函数一样向方法传递参数。
而对于公共方法,可以不显式地声明作用域,而是像声明函数(不带作用域声明)一样声明方法。
方法调用
调用方法与调用函数几乎相同。还是看前面的例子,可以如下调用calculatesalary()方法:
$employee = new Employee("Gonn");
$salary = $eoployee->calculatesalary();
猜你喜欢:
暂无回复。