温振宏内容介绍:第1章PHP面向对象程序设计第2章字符串处理函数第3章PHP其他常用函数3.1日期和时间函数3.2图像处理函数3.3文件系统函数第1章PHP面向对象编程1.1面向对象概述1.2类的定义、实例化、访问控制1.3构造函数与析构函数1.4面向对象的基本特征:封装、继承与多态1.5抽象类1.6接口掌握的知识点:1.类的定义,实例化,访问控制2.构造函数与析构函数3.面向对象的基本特征:封装、继承和多态4.面向对象常用关键字5.抽象类6.接口1.1面向对象概述1.计算机语言的发展2.面向对象的基本概念类:表示彼此间有一些关系的对象的集合。对象:客观存在的并具有一定的属性和行为的事物对象的属性:对象本身具有的常量、变量和特性。对象的方法:可以改变自身或对其他对象产生作用和影响的行为和手段。类和对象的关系:类的实例化的结果是对象。1.2类的定义classPerson{var$name=‘lucy’;var$age=24;var$sex=‘女’;functionwalk(){--------------}}类的声明:class关键字成员属性成员方法类的成员练习1:定义Person类(P8)成员属性:name,age,sex成员方法:say(),run()练习2:定义Phone类成员属性:manufactures,color,battery_capacity,screen_size成员方法:call(),message(),playMusic(),photo()练习3:定义Computer类成员属性:brand,type,size成员方法:input(),display(),output()格式:$varName=newclassName(par,par2,---);实例:ClassPerson{}$person1=newPerson();$person2=newPerson();===================ClassPhone{}$phone1=newPhone();$phone2=newPhone();======类的实例化:new关键字类的实例化:$this关键字classstudent{var$name;var$age;var$sex;functiongetInfo(){echo‘姓名:’.$this-name.”br/”;echo‘年龄:’.$this-age.”br/”;echo‘性别:’.$this-sex.”br/”;}}$stu1=newstudent();$stu1-name=‘张三丰’;$stu1-age=25;$stu1-sex=‘男’;$stu1-getInfo();1.$this代表当前对象的引用2.对象访问类中属性或方法:-练习3:定义Person类成员属性:name,sex,age成员方法:say(),run()实例化对象:$person1,$person2,$person31.定义类用()关键字,定义没有成员的MyClass类:()。2.实例化对象用()关键字,针对MyClass类实例化对象myClass1:()。3.关键字(),代表当前对象的引用。练习4:定义Circle类成员属性:$r,$pi成员方法:getArea(),getperimetor()实例化对象:$c1,$c2功能:计算不同圆形的面积和周长1.3构造方法和析构方法1.构造方法:是类中的一种特殊方法。特点:构造方法必须命名为__construct();构造方法在类实例化时自动调用;构造方法没有返回值;作用:通常用于类的初始化;classStudent{var$name;var$age;var$sex;function__construct($name,$age,$sex){$this-name=$name;$this-age=$age;$this-sex=$sex;}functiongetInfo(){echo'学生姓名:'.$this-name.'br';echo'学生年龄:'.$this-age.'br'echo'学生性别:'.$this-sex.'br';}}$stu1=newStudent('张三丰',25,'男');$stu1-getInfo();2.析构方法:是与构造方法相对应的另一个特殊方法。特点:析构方法必须命名为__destruct();析构方法没有参数;析构方法没有返回值;析构方法在对象被销毁是自动调用。作用:销毁对象,释放内存。classstudent{var$name;var$age;var$sex;function__construct($name,$age,$sex){$this-name=$name;$this-age=$age;$this-sex=$sex;}functiongetInfo(){echo'学生姓名:'.$this-name.'br';echo'学生年龄:'.$this-age.'br'echo'学生性别:'.$this-sex.'br';}function__destruct(){}}$stu1=newstudent('张三丰',25,'男');$stu1-getInfo();作业1:P181.定义Person类成员属性:name,sex,age成员方法:say(),run()特殊方法:构造方法,析构方法2.实例化对象$person1=newPerson(‘张良’,’男’,20);$person2=newPerson(‘黎明’,’男’,30);$person1-say();$person1-run();$person2-say();$person1-run();1.4面向对象的基本特征基本特征:封装、继承和多态1.封装:即把客观事物封装成类,并且类中的数据和方法可以只让可信的类或者对象操作,对不可信的类或者对象进行信息隐藏。2.继承:使用现有类的所有功能(private属性和方法除外)。php中通过extends关键字实现继承。通过继承创建的类称为“子类”或“派生类”;被继承的类称为“基类”、“父类”或“超类”;继承的过程就是从一般到特殊的过程。3.多态:父类引用指向子类对象。1.封装性封装性:就是把对象的成员属性和成员方法结合成一个独立的相同单位(即类),并尽可能的隐蔽类的内部细节。把对象的全部成员属性和成员方法结合在一起,形成一个不可分割的独立单位(即类)。信息隐蔽,即尽可能的隐蔽类的内部细节,只保留有限的接口与外部发生联系。访问控制修饰符Public:访问没有限制(var)Protected:只有类的内部和子类内部可以访问Private:只有类的内部可以访问1.面向对象的三大特征:()()()。2.PHP中的访问控制修饰符有:()()()。3.继承是通过()关键字实现的。例如Worker类继承Person类,()。4.PHP不支持多继承,即一个子类只能有一个父类。5.防止类被继承,防止方法被覆盖,需用()关键字。ClassMyClass{Private$pro1=100;PrivatefunctionprintHello(){Echo‘Hello’.”br/\n”;}}$obj1=newMyClass();Echo$obj-pro1;$obj-printHello();Private修饰的属性和方法classPerson{private$age;function__construct($a){$this-age=$a;}functiongetInfo(){echo'年龄:'.$this-age.'br';$this-work().'br';}functionsetAge($age1){if($age10||$age1150){returnfalse;}else{$this-age=$age1;}}functiongetAge(){echo$this-age;}privatefunctionwork(){echo‘work’;}}$p1=newPerson(25);//echo$p1-age.”br\n”;$p1-getInfo();$p1-setAge(50);$p1-getAge();//$p1-work();$p1-getInfo();2.继承性使用extends关键字实现继承。子类可以使用父类(private修饰的属性和方法除外)的所有属性和方法。PHP不支持多继承,即只能有一个父类。可以使用final关键字防止被继承。classPerson{var$name;//为简化继承用var修饰var$sex;var$age;function__construct($_name,$_sex,$_age){$this-name=$_name;$this-sex=$_sex;$this-age=$_age;}functiongetInfo(){echo“姓名:”.$this-name.”br/\n”;echo“性别:”.$this-sex.”br/\n”;echo“年龄:”.$this-age.”br/\n”;}function__destruct(){echo$this-name.’再见!’.”br/”;}}1.定义父类PersonclassStudentextendsPerson{var$school;functionstudy(){echo‘我在’.$this-school.’学习’;}}$stu1=newStudent(张丹丹,女,28);$stu1-getInfo();$stu1-school=‘中山大学’;$stu1-study();2.定义子类StudentClassfoo1{}Classfoo2{}Classson1extendsfoo1{}Classson1extendsfoo2{}-------------------------------Classfoo1{}Classson1extendsfoo1{}Classson2extendsfoo1{}-------------------------------ClassMyClass1{}ClassMyClass2extendsMyClass1{}ClassMyClass3extendsMyClass2{}FinalclassMyClass{var$pro1=‘final:’;functionfun1(){echo‘final实例’;}}$c1=newMyClass();$c1-pro1;$c1-fun1();-------------------------------ClassMyClass1extendsMyClass{}PHP不支持多继承Final修饰的类不能被继承ClassMyClass{Private$pro1=100;PrivatefunctionprintHello(){Echo‘Hello’.”br/\n”;}}ClassMyClass1extendsMyClass{FunctionTest(){Echo‘输出父类的成员属性’.$this-pro1;Echo“br/\n”;$this-printHello();}}$obj1=newMyClass1();$obj1-Test();Private修饰的属性和方法ClassMyClass{Protected$pro1=100;ProtectedfunctionprintHello(){Echo”hello!br/\n”;}}ClassMyClass1extendsMyClass{FunctionTest(){echo‘访问父类protected修饰的属性和方法:’.$this-pro.”br/\n”;