如何面向PHP对象编程?
来源:公司新闻
2024-03-21
面向对象编程(Object Oriented Programming, OOP)是一种编程思想,目前在大型应用软件开发中应用非常广泛。
面向对象的程序由对象构成(object)把所有的对象都划分成类(class),每个类定义了一组静态的属性和动态的方法。对象之间通过传递消息互相联
系,驱动整个系统来运转类是具有相同或相似的结构、操作与约束关系的对象组成的集合。对象是对某个类的具体化实例,每个类都是具有某些共同特征对象的抽
象。
1.类和对象
在现实中,任何一个具体事物都可以看作一个对象,例如一个人、一辆汽车、一场电影等都是对象。对象包含属性和方法。将张三这个人看做对象,则该对象具有下列属性和方法。
对于对象的属性,可以用变量来描述,例如$ age=33表示张三的年龄是33岁。对于对象的方法,则可以用函数来定义,例如,function walk(){...}用来描述走路。
由于现实中很多对象都属于同一类,因此还可以把同一类的对象看成一个类,例如所有的人都属于“人”类,则对象可看成是类的一个实例,例如张三是“人”类的一个实例。因此定义对象前都要先定义类。
1)类的定义
在PHP中,使用class关键字可以定义一个类。语法格式为:
class类名{
定义成员变量
定义成员函数
}
可见,类实际上就是一组静态属性和动态方法的集合,将它们封装在一起就形成了一个类。
说明:在类定义中.使用关键字var来定义成员变量。在定义成员变量时,也可直接对它赋值。
类成员变量又可分为两种,一种是公有变量,用关键字public或var定义;一种是私有变量,用关键字private定义。公有变量可以在类的外部被访
问,它是类与其他类或用户交流的接口。用户可通过公有变量向类中传递数据,也可以通过公有变量获取类中的数据。私有变量在类的外部无法访问,以保证类的设
计思想和内部结构不完全对外公开,这就是面向对象中的封装性。
在类userInfo中,使用公有变量来保存用户名,使用私有变量来保存用户密码。
说明:
①类一旦定义后,系统会自动为其创建一个$this的伪变量,代表类自身。
②如果类的成员函数中要访间类中的变量或其他函数,必须使用“$this一>变量名”或“$this一>函数名”访问,如$this
一>userName。不能简单使用$userName来访问,也不能写成$this一>$userName,更不能写成userInfo
一>userName。
③如果要在类外面访问类中定义的变量和方法,必须先创建该类的对象,然后用“对象名一>变量名”或“对象名一>方法名”来访问。
④“一>”是PHP中的成员选择运算符。该运算符表示右边的变量或函数属于左边的类或对象。注意区分“一>”和“=>”,“=>”是初始化数组元素时分隔“键”和“值”的符号。
2)构造函数和析构函数
在定义类时司以在类中定义一个特殊的函数一构造函数.用来执行一些初始化的任务,如对属性赋初值等。PHP规定构造函数的名称必须为“_construct"。
说明:
①构造函数名”_construct”是以两个下划线开头
②构造函数不能被主动调用,例如“对象名一>_construct()”是错误的。只有在使用关键字new创建对象时系统才会自动调用构造函数。
与构造函数相对应的是析构函数,析构函数会在某个对象的所有引用被删除或者对象被销毁时执行已也就是说,如果定义了析构函数,则对象在销毁前会调用析构函数。
PHP规定析构函数的名称为“_destruoct( )",析构函数不能带有任何参数。
3)定义对象
对象是类的实例,可以使用new关键字来创建对象。定义一个类userInfo的对象$user的代码如下:
$ user=new userInfo();
则$user就是一个对象(类型为object的变量,定义了对象后,就可使用对象来访问类中的成员变量或成员方法。
注意:
①如果类中的构造函数包含参数,则在创建对象时,也需要提供相应的参数。
②对象只能访问类中的公有变量和函数,如果试图访问类中的私有变量或函数,如echo $user-> pwd。则程序会出错,提示不能访问私有属性。
4)操作符“::”
相比伪变量$this只能在类的内部使用,操作符“::”更加强大。它可以在没有声明对象的情况下直接访问类中的变量或方法。
操作符“::”可用于访问静态变量、静态方法和常量。还可用于覆盖类中的成员变量和方法。其语法格式为:关键字::变量名/方法名/常量名,
其中关键字可以分为以下3种情况。
(1)类名:用来调用本类中的变量、常量和方法。
(2)self:用来调用当前类中的静态成员和常量。
(3)parent:用来调用父类中的变量、常量和方法。
5)instanceof关键字
instanceof关键字用来检测某个对象是否属于某个类,它返回一个布尔值。