1、面向对象编程
一、面向对象的学习函数
1)语法的学习学习
OOP(面向对象的编程)this
2)思想的学习spa
OOA(面向对象的分析)设计
OOD(面向对象的设计)code
二、什么是面向对象对象
1)操做对象blog
2)从程序的执行者变成了程序的管理者继承
三、什么是对象
1)万物皆对象
2)实实在在的一个独立个体
四、面向对象的目标
1)解决面向过程的缺陷(包括:代码冗余较大、不利于协同开发、开发效率极低、代码维护困难、程序的扩展性差)
2)达到高可扩展性、高可重用性、高灵活性、高内聚(内部联系)、低耦合(外部联系)
五、面向对象的特色
封装、继承、多态
六、对象的组成
1)成员属性(描述)
2)成员方法(功能、行为)
2、类
一、什么是类
类是具备相同属性和相同行为的对象的一类总称
二、类和对象的关系
1)先有类,再有对象
2)类是用来描述对象的
3)类是对象的抽象化
4)对象是类的实例化
三、类的组成部分
成员属性(一个成员属性就是一个变量)
成员方法(一个成员方法就是一个函数)
四、如何声明一个类
1)简单格式:
class 类名{
[成员属性] //也叫成员变量
[成员方法] //也叫成员函数
}
2)完整格式:
class 类名 [extends 父类] [implements 接口1[,接口2...]]{
[成员属性]
[成员方法]
}
类的声明须要注意的:
1.成员属性的声明,属性前必需要有修饰符
修饰符 $变量名[=默认值];
经常使用属性修饰符:public、protected、private、static、var
2.成员属性能够不给默认值
3.成员属性就是一个变量,其默认值不能够是另外一个变量名、带运算符的表达式、方法或函数调用
public $var1=1+2; //错误格式
public $var2=self::myStaticMethod(); //错误格式
public $var3=$var4; //错误格式
4.成员方法的声明,能够没有修饰符,也能够没有返回值
[修饰符] function 方法名(参数1,...){
[方法体]
[return 返回值]
}
修饰符:public、protected、private、static、abstract、final
5.成员方法就是一个函数,必须和对象相关不能是一些无心义的操做
3、经过类实例化对象
一、对象的实例化
1)须要经过类来进行实例化对象:
$对象名称=new 类名称();
$对象名称=new 类名称([参数1,...]);
2)成员属性和成员方法都必须藉由该对象来进行访问、调用
3)对象的访问须使用 -> 来访问
4)类的名称不区分大小写
5)类能够在任意位置调用
例:
class Person{ //[成员属性] //姓名 var $name; //性别 var $sex; //年龄 var $age; //[成员方法] //吃饭 function eat(){ echo "爱吃肉"; } //睡觉 function sleeep(){ echo "爱睡懒觉"; } //说话 function speak(){ echo "不爱BB"; } } $person=new Person; $person->name="autumn"; $person->sex="X"; $person->age=25; echo "<pre>"; var_dump($person); echo "</pre>"; echo $person->name.$person->sex.$person->age.$person->eat().$person->sleeep().$person->speak();
object(Person)#1 (3) { ["name"]=> string(6) "autumn" ["sex"]=> string(1) "X" ["age"]=> int(25) } 爱吃肉爱睡懒觉不爱BBautumnX25
二、$this 关键字
1)$this就表明本对象
2)$this只能在类的内部去使用
3)$this能够在类中调用本对象本身的成员属性和成员方法
4)在类的内部的多个成员方法中利用“return $this;”便可实现链式操做
例1:
class Person{ //[成员属性] //姓名 var $name; //性别 var $sex; //年龄 var $age; //[成员方法] function info(){ echo "姓名:".$this->name."性别:".$this->sex."年龄:".$this->age; } } $p1=new Person; $p1->name="admin1"; $p1->sex="男"; $p1->age=20; $p1->info(); echo "<hr>"; $p2=new Person; $p2->name="admin2"; $p2->sex="女"; $p2->age=25; $p2->info(); echo "<hr>"; $p3=new Person; $p3->name="admin3"; $p3->sex="男"; $p3->age=30; $p3->info();
姓名:admin1性别:男年龄:20
姓名:admin2性别:女年龄:25
姓名:admin3性别:男年龄:30
例2:
class Person{ //[成员属性] //姓名 var $name; //性别 var $sex; //年龄 var $age; //[成员方法] function eat(){ echo "吃晚饭"; return $this; } function speak(){ echo "不爱BB"; return $this; } function sleeep(){ echo "上床睡觉"; return $this; } function offlights(){ echo "关灯"; $this->speak(); } } $person=new Person; $person->eat()->speak()->sleeep()->offlights();
吃晚饭不爱BB上床睡觉关灯不爱BB
三、构造方法
方法一:
方法名称与类名称相同的方法,PHP4及如下版本仅支持此方法:
class 类名{
[成员属性]
[成员方法]
function 与类名相同([参数1,...]){
}
}
方法二:
__construct 替代方法名称,PHP5及以上版本新增,系统会默认优先选择此方法,推荐使用
class 类名{
[成员属性]
[成员方法]
function __construct([参数1,...]){
}
}
参数:不定
触发时机:当对象new实例化的一瞬间自动调用这个方法
做用:对成员进行初始化操做
例:
class Person{ //[成员属性] //姓名 var $name; //性别 var $sex; //年龄 var $age; //[成员方法] //PHP4及如下版本支持 function Person($name,$sex,$age){ $this->name=$name; //对成员属性$name进行赋值 $this->sex=$sex; //对成员属性$sex进行赋值 $this->age=$age; //对成员属性$age进行赋值 echo "姓名:".$this->name.";性别:".$this->sex.";年龄:".$this->age.";"; } //PHP5及以上版本支持,系统默认优先选择此方法 function __construct($name,$sex,$age){ $this->name=$name; //对成员属性$name进行赋值 $this->sex=$sex; //对成员属性$sex进行赋值 $this->age=$age; //对成员属性$age进行赋值 echo "姓名:".$this->name.";性别:".$this->sex.";年龄:".$this->age.";"; } } $person=new Person("autumn","男",25);
四、析构方法
方法:__destruct 替代方法名称
class 类名{
[成员属性]
[成员方法]
function __destruct(){
}
}
参数:无
触发时机:当对象销毁的一瞬间自动调用析构方法
做用:作程序的后续操做,如关闭文件、释放结果集等
例:
class Person{ //[成员属性] //姓名 var $name; //性别 var $sex; //年龄 var $age; //[成员方法] function __construct($name,$sex,$age){ $this->name=$name; //对成员属性$name进行赋值 $this->sex=$sex; //对成员属性$sex进行赋值 $this->age=$age; //对成员属性$age进行赋值 echo "姓名:".$this->name.";性别:".$this->sex.";年龄:".$this->age.";"; } //在对象被销毁的一瞬间自动调用析构方法 function __destruct(){ echo $this->name." 被析构啦!<br>"; } } //先实例化的对象,其对应的保存变量在栈中先入栈,销毁时后入栈的先销毁 //对应的,后实例化对象先调用析构 $p1=new Person("admin01","男",20); echo "<br>"; $p2=new Person("admin02","女",25); echo "<br>"; $p3=new Person("admin03","男",30); echo "<br>";
姓名:admin01;性别:男;年龄:20;姓名:admin02;性别:女;年龄:25;姓名:admin03;性别:男;年龄:30;admin03 被析构啦!admin02 被析构啦!admin01 被析构啦!