PHP面向对象
PHP面向对象
面向对象编程(Object Oriented Programming, OOP, 面向对象程序设计):
是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP达到了软件工程的三 个目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。
对象的概念:
对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽象 的角度来说,对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组 服务的封装体。客观世界是由对象和对象之间的联系组成的。
类的概念:
类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。
如何抽出一个类:
class 类名
{
}
例子:
class 人
{
成员属性:姓名、性别、年龄、身高、体重、电话、家庭住址
成员方法:可以开车, 会说英语, 可以使用电脑
}
class Person
{
// 下面是人的成员属性
var $name; //人的名子
var $sex; //人的性别
var $age; //人的年龄
// 下面是人的成员方法
function FANGFA()
{
return;
}
}
计算矩形面积:
class 矩形
{
// 矩形的属性
矩形的长;
矩形的宽;
// 矩形的方法
矩形的周长;
矩形的面积;
}
实例:
class Rect
{
var $kuan;
var $gao;
function zhouChang()
{
计算矩形的周长;
}
function mianJi()
{
计算矩形的面积;
}
}
如何实例化对象: 对象名称 = new 类名称();
class Person
{
//下面是人的成员属性
var $name; //人的名字
var $sex; //人的性别
var $age; //人的年龄
//下面是人的成员方法
function say() { //这个人可以说话的方法
echo "这个人在说话";
}
function run() { //这个人可以走路的方法
echo "这个人在走路";
}
}
$p1=new Person();
$p2=new Person();
$p3=new Person();
使用对象:
对象->属性 $p1->name; $p2->age; $p3->sex;
对象->方法 $p1->say(); $p2->run();
$p1->name = "张三"; //属性对象 $p1->sex = "男"; $p1->age = 20;
$p2->say(); //方法对象 $p2->run();
this对象的使用:
在对象的内部,让对象里的方法访问本对象的属性, 或是对象中的方法去调用本对象的其它方法。
$this->属性: $this->name; $this->age; $this->sex;
$this->方法 :$this->say(); $this->run();
实例:
class Person
{
var $name;
var $sex;
var $age;
// 定义一个构造方法参数为私有的属性姓名$name、性别$sex和年龄$age进行赋值
function __construct($name, $sex, $age)
{
// 通过构造方法传进来的$name给私有成员属性$this->name赋初使值
$this->name = $name;
// 通过构造方法传进来的$sex给私有成员属性$this->sex赋初使值
$this->sex = $sex;
// 通过构造方法传进来的$age给私有成员属性$this->age赋初使值
$this->age = $age;
}
// 这个人可以说话的方法, 说出自己的私有属性,在这里也可以访问私有方法
function say()
{
echo "我的名子叫:" . $this->name . " 性别:" . $this->sex . " 我的年龄是:" . $this->age;
}
}
// 通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄
$p1 = new Person("张三", "男", 20);
$p2 = new Person("李四", "女", 30);
$p3 = new Person("王五", "男", 40);
// 下面访问$p1对象中的说话方法
$p1->say();
// 下面访问$p2对象中的说话方法
$p2->say();
// 下面访问$p3对象中的说话方法
$p3->say();

构造方法:
大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法。构 造函数的声明与其它操作的声明一样,只是其名称必须是__construct( )。这是PHP5中的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5中仍然可以用,但现在以经很少有人用了,这样做的好处是可以使构 造函数独立于类名,当类名发生改变时不需要改相应的构造函数名称了。为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP将搜索一个php4中的写法,与类名相同名的构造方法。
格式:function __construct ( [参数] ) { ... ... }
function __construct($name, $sex, $age)
{
// 通过构造方法传进来的$name给成员属性$this->name赋初使值
$this->name = $name;
// 通过构造方法传进来的$sex给成员属性$this->sex赋初使值
$this->sex = $sex;
// 通过构造方法传进来的$age给成员属性$this->age赋初使值
$this->age = $age;
}
析构函数:
与构造函数相对的就是析构函数。析构函数是PHP5新添加的内容,在PHP4中没有析构函数。 析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件, 释放结果集等,析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,也就是对象在内存中被销毁前调用析构函数。与构造函数的名称类似, 一个类的析构函数名称必须是__destruct( )。析构函数不能带有任何参数。
格式:function __destruct ( ) { ... ... }
// 这是一个析构函数,在对象销毁前调用
function __destruct()
{
echo "再见" . $this->name;
}

浙公网安备 33010602011771号