php5面向对象的程序设计
数组和对象:都属于php的复合类型(一个变量可以存储多个单元)
对象比数组强大,不仅可以存储多个数据,还可以将函数存在对象
对象的三大特性:封装、继承、多态
什么是对象 ,万物皆对象:桌子、椅子、电脑、手机、人。。。。。
类和对象的关系:用类创建的实例就是对象,对象中包含类中所以的成员属性和方法
对象:成员
成员属性:变量====定义对象的外观和状态
成员方法:函数====定义对象的功能
类的声明
1.你要开发的是什么,确定写什么类如:电话类
[修饰类的关键字] class 类名{
成员属性:外观、颜色、电池容量、屏幕尺寸...
成员方法:大电话、拍照、发信息....
}
2.类中的成员一定要属于这个类
3.在类中声明变量时一定要有修饰词[private protected public var static const ....],如果不知道使用什么修饰词时,建议用public或var,变量最好不要给值,
4.一个文件只保存一个类,文件名中包含类名,文件:类名.class.php,方便自动加载
5.通过类来实例化对象,只有对象才在内存中存储
- 使用new创建一个对象,加上类名,就是创建那个类的对象
- 只要有一个new关键字就是创建一个对象,没创建一个对象就在内存中分配一个空间
内存的解析:
数据段:常量、静态变量
栈内存:空间小、运行速度快,空间大小不固定、永远只存4字节的数据,主要存储参数名称,后进先出的原则
堆内存:空间大,cpu访问慢要通过栈来访问、长度不固定、存储比较大的数据:字符串/数组/对象
代码段:函数方法
6.对象成员引用:对象->成员
7.类的命名规则:
变量:aaaBbbCcc
函数:aaaBbbCcc
常量:AAABBBCCC
类名:AaaBbbCcc
<?php
header('content-type:text/html;charset=utf-8');
class Phone{
var $color;
var $pinpai;
public $screenSize;
function call($number){
echo "打电话给 $number";
}
function message(){
}
}
$phone = new Phone();
$phone->call(110);
面向对象的构造与析构方法
1.对象中成员的访问(就是对象内部方法中,去访问对象中的其他方法和成员属性)
2.在对象中的方法中都默认有一个$this关键字,这个关键字代表调用这个方法的对象。第一人称代词:我
构造方法
1.是对象创建完成以后,“第一个”自动调用的方法
2.构造方法的定义:
为类的成员属性初始化。
在php4中和类名相同的的函数就是构造方法。
在php5中构造方法选择使用魔术方法__construct()
优点:在改变类名时,构造方法不需要改变
魔术方法:在类中写出了某个魔术方法,这个方法对象的功能就会添加上。方法名都是系统固定的,没有自定义。
不同的魔术方法有不同的调用机制,都是已__开头的方法
__construct(); __destruct(); __set(); __get(); __isset(); __unset(); __clone(); __call(); __sleep(); __weakup(); toString(); __auto_
析构方法
- 当对象被释放之前最后一个自动调用的方法
- (java、PHP)使用垃圾回收器,而c++手动的释放
作用:关闭一些资源,做一些清理的工作
<?php
header('content-type:text/html;charset=utf-8');
class Person{
var $name;
var $sex;
public $age;
//传统的构造方法 php4
function Person($name="",$sex="",$age=""){
$this->name= $name;
$this->sex= $sex;
$this->age= $age;
}
//构造方法魔术方法 php5
function __construct($name,$sex,$age){
$this->name= $name;
$this->sex= $sex;
$this->age= $age;
}
function say(){
echo "我的名字:$this->name ,我的年纪:$this->age,我的性别:$this->sex 。<br>";
$this->run();
}
function run(){
}
//析构
function __destruct(){
echo "结束";
}
}
$person = new Person("张三","男","30");
$person->say();