PHP中的对象相对其它语言,比如Java、C#来说要简单很多。它没有重载(不能存在相同的方法名),继承也相对简单。
1.声明类
类的声明主要包括类本身的声明以及方法、属性、继承、构造函数的声明。这些东西说起来一堆,看代码就很简单了。看如下代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
| class Person { // 声明属性 var $name; // 给属性设置默认值。默认值只能是简单的常量,不能有计算。 var $age = 20; // 构造函数 function Person($name, $age) { $this->name = $name; $this->age = $age; } } // 子类的声明 class Employee extends Person { var $salary; // 构造函数 function Employee($name, $age, $salary) { // 调用父类构造函数 $this->Person($name, $age); $this->salary = $salary; } // 方法声明 function add_salary($add) { $this->salary += $add; return $this->salary; } }
|
2.创建和访问对象
在PHP中,可以使用$object = new Class;来创建对象。其中类名可以直接写,也可以用变量表示。访问对象用->。比如访问属性$object->propertyname,访问方法$object->mathodname();可以看如下代码。
1 2 3 4 5 6 7 8 9
|
| // 直接用类名创建对象 $employ = new Employee('Dick', 20, 3000); // 用变量创建对象 $class_name = 'Employee'; $employ = new $class_name('Dick', 20, 3000); // 访问属性 $name = $employ->name; // 调用方法 $added_salary = $employ->add_salary(1000);
|
3.自省
因为在PHP中,自省用到的地方不是很多,所以就不详细说了,如果想看详细的资料,可以看官方的说明。
class_exists() 查看类是否存在
get_ declared_ classes() 查看已经定义的类
get_ parent_ class() 取得父类
get_ class() 取得对象的类名
method_ exists() 对象中是否存在某个函数
property_ exists() 对象中是否存在某个属性
get_ class_ methods() 取得类定义的函数
get_ class_ vars() 取得类定义的属性
get_ object_ vars() 取得对象的值的数组
参考资料:
PHP程序设计,2003,第六章 对象