PHP5 面向对象的概述
一、面向对象的特性
数组和对象:都属于PHP的符合类型(一个变量可以存储多个单元);
对象比数组更强大,不仅可以存储多个数据,还可以将函数存在对象;
对象的三大特性:封装、继承、多态;
面向对象编程(oop )
面向对象和面向过程之间的区别——最小的单位分别是:函数、 对象
二、对象的概念
对象就是东西,一个实体。
对象:成员 成员属性(变量——定义对象的外观和状态)
成员方法(函数——定义对象的功能)
什么是类?——分类、类型、自己类型(桌子、椅子、电脑);在类中定义这个类型的属性和方法。
类和对象之间的关系:
声明类-->实例化对象(创建对象)-->用对象
并不是面向对象的语法难,最难的就是如果设计出面向对象的程序!
三、类的声明
1.你要开发的是什么,确定写什么类。
2.类中的成员一定要属于这个类【修饰类的关键字】 class 类名{
成员属性;
成员方法;
}
一个文件只保存一个类,文件名中包含类名, 文件: 类名.class.php
类名一定要有意义,方便;类名单词首字母大写,变量第二个单词首字母大写。
在类中声明成员属性时,前面必须有修饰词(private public protect constant var),当不知道使用哪个时,就是用var;如果知道使用哪个修饰词,就不使用var。 类中的成员属性,如果创建多个对象时,每个对象有不同的值,成员属性不给初值,创建对象之后再赋值。
四、对象实例化和使用
通过类来实例化对象,只有对象才在内存有存储空间;
1.使用的是new新建一个对象,加上类名,就是创建那个类的对象;例如:$对象引用 = new 类名;
2.只要有一个new关键字就是创建一个对象,创建一个对象就是在内存中分配了一个空间;(对象在内存中的分配)
3.对象的使用
对象中的成员必须通过对象的引用来访问;
对象->成员
对象->成员属性=新值
echo 对象->成员属性
对象->成员方法
4.$this关键字的使用
① 对象中成员的访问(就是在一个对象的内部方法中,去访问本对象中的其它方法和成员属性)
② 在对象中的方法中都默认有一个$this关键字, 这个关键字代表调用这个方法的对象
③ 第一人称代词:我
五、构造方法和析构方法
1.构造方法, 构造器
① 是对象创建完成以后,“第一个” “自动调用”的方法
② 构造方法的定义, 方法名一个固定的,
在PHP4中 和类名相同的方法就是构造方法
在PHP5中 构造方法选择使用 魔术方法 __construct() 所有类中声明构造方法都使用这个名称
优点: 在改变类名时,构造方法不用改变
作用:就是为成员属性初使化;
魔术方法:
在类中写出了某个魔术方法, 这个方法对象的功能 就会添加上
方法名称都固定的(都是系统给我们提供好),没有自己定义的,
每一个魔术方法, 都是在不同时刻为了完成某一功能自动调用的方法
不同的魔术方法有不同调用 时机
都是以 __开头的方法
__construct();
__destruct();
__set();
__get();
__isset();
__unset();
__clone();
__call();
__sleep();
__weakup();
__toString()
...
__autoload();
2. 析构方法:__destruct();
当对象被释放之前最后一个 “自动”调用的方法,后进先出的原则;
使用垃圾回收器(java PHP)而C++手动的释放
作用:关闭一些资源, 作一些清理的工作
示例:
<?php class Person { var $name; var $age; var $sex; function __construct($name="", $age=0, $sex="男"){ $this->name=$name; $this->age=$age; $this->sex=$sex; } function say(){ echo "我的名子:{$this->name},我的年龄:{$this->age},我的性别:{$this->sex}。<br>"; $this->eat(); } function run(){ } function eat(){ } function __destruct(){ echo $this->name."再见!<br>"; } } $p1=new Person("zhangsan", 20, "女"); $p2=new Person("lisi", 25); $p3=new Person("wangwu"); $p1->say(); $p1=null; $p2->say(); $p3->say(); ?>