7.特殊的引用“$this”的使用
现在我们知道了如何访问对象中的成员,是通过“对象->成员”的方式访问的,这是在对象的外部去访问对象中成员的形式,那么如果我想在对象的内部,让对象里的方法访问本对象的属性,或是对象中的方法去调用本对象的其它方法这时我们怎么办?因为对象里面的所有的成员都要用对象来调用,包括对象的内部成员之间的调用,所以在PHP里面给我提供了一个本对象的引用$this, 每个对象里面都有一个对象的引用$this来代表这个对象,完成对象内部成员的调用, this的本意就是“这个”的意思, 上面的实例里面,我们实例化三个实例对象$P1、 $P2、 $P3,这三个对象里面各自存在一个$this分别代表对象$p1、$p2、$p3 。
通过上图我们可以看到,$this就是对象内部代表这个对象的引用,在对象内部和调用本对象的成员和对象外部调用对象的成员所使用的方式是一样的。
$this->属性 $this->name; $this->age; $this->sex;
$this->方法 $this->say(); $this->run();
修改一下上面的实例,让每个人都说出自己的名字,性别和年龄:
<?php
class Person
{
//下面是人的成员属性
var $name; //人的名子
var $sex; //人的性别
var $age; //人的年龄
//下面是人的成员方法
function say() //这个人可以说话的方法
{
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
function run() //这个人可以走路的方法
{
echo "这个人在走路";
}
}
$p1=new Person(); //创建实例对象$p1
$p2=new Person(); //创建实例对象$p2
$p3=new Person(); //创建实例对象$p3
//下面三行是给$p1对象属性赋值
$p1->name="张三";
$p1->sex="男";
$p1->age=20;
//下面访问$p1对象中的说话方法
$p1->say();
//下面三行是给$p2对象属性赋值
$p2->name="李四";
$p2->sex="女";
$p2->age=30;
//下面访问$p2对象中的说话方法
$p2->say();
//下面三行是给$p3对象属性赋值
$p3->name="王五";
$p3->sex="男";
$p3->age=40;
//下面访问$p3对象中的说话方法
$p3->say();
?>
输出结果为:
我的名子叫:张三 性别:男 我的年龄是:20
我的名子叫:李四 性别:女 我的年龄是:30
我的名子叫:王五 性别:男 我的年龄是:40
分析一下这个方法:
function say() //这个人可以说话的方法
{
echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>";
}
在$p1、$p2和$p3这三个对象中都有say()这个方法,$this分别代表这三个对象, 调用相应的属性,打印出属性的值,这就是在对象内部访问对象属性的方式, 如果相在say()这个方法里调用run()这个方法也是可以的,在say()这个方法中使用$this->run()的方式来完成调用。
8.构造方法与析构方法
大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法。
构造函数的声明与其它操作的声明一样,只是其名称必须是__construct( )。这是PHP5中的变化,以前的版本中,构造函数的名称必须与类名相同,这种在PHP5中仍然可以用,但现在以经很少有人用了,这样做的好处是可以使构造函数独立于类名,当类名发生改变时不需要改相应的构造函数名称了。为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP将搜索一个php4中的写法,与类名相同名的构造方法。
格式:function __construct ( [参数] ) { ... ... }
在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构造方法,不能主动的调用这个方法,所以通常用它执行一些有用的初始化任务。比如对成属性在创建对象的时候赋初值。
<?
//创建一个人类
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."<br>";
}
}
//通过构造方法创建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();
?>
输出结果为:
我的名子叫:张三 性别:男 我的年龄是:20
我的名子叫:李四 性别:女 我的年龄是:30
我的名子叫:王五 性别:男 我的年龄是:40
如图:
析构函数:
与构造函数相对的就是析构函数。析构函数是PHP5新添加的内容,在PHP4中没有析构函数。析构函数允许在销毁一个类之前执行的一些操作或完成一些功能,比如说关闭文件,释放结果集等,析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行,也就是对象在内存中被销毁前调用析构函数。与构造函数的名称类似,一个类的析构函数名称必须是__destruct( )。析构函数不能带有任何参数。
格式:function __destruct ( ) { ... ... }
<?
//创建一个人类
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."<br>";
}
//这是一个析构函数,在对象销毁前调用
function __destruct()
{
echo “再见”.$this->name.”<br>”;
}
//通过构造方法创建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();
?>
输出结果为:
我的名子叫:张三 性别:男 我的年龄是:20
我的名子叫:李四 性别:女 我的年龄是:30
我的名子叫:王五 性别:男 我的年龄是:40
再见张三
再见李四
再见王五
分享到:
相关推荐
### PHP面向对象手册知识点解析 #### 一、面向对象编程简介 面向对象编程(Object-Oriented Programming,简称 OOP)是一种程序设计范式,它将数据和处理数据的方法捆绑在一起形成“对象”。OOP 的核心思想是通过...
面向对象的概念 2.什么是类,什么是对象,类和对象这间的关系 3.什么是面向对象编程呢? 4.如何抽象出一个类? 5.如何实例化对象? 6.如何去使用对象中的成员? 7.特殊的引用“$this”的使用 8.构造...
### PHP面向对象技术详解 #### 1. 面向对象的概念 面向对象编程(Object Oriented Programming,简称 OOP)是一种程序设计思想,它的核心在于将程序中的数据和操作这些数据的方法组织在一起,形成一个整体,即对象...
该书是对PHP开发者掌握面向对象技术以及提升编程能力非常有益的参考读物。 在PHP面向对象编程的领域中,有几个重要的概念需要掌握。首先,面向对象编程(OOP)是一种编程范式,它使用“对象”来表示数据和方法。...
PHP 在 PHP 5 及以后的版本中,提供了完整的面向对象编程支持。 1. 类(Class)是面向对象编程的基础,它定义了一组属性(Attributes)和方法(Methods),这些属性和方法共同描述了属于该类的所有对象的特征和行为...
面向对象技术是软件开发中一种重要的编程范式,它以对象为基础来构建程序。在PHP中,面向对象编程(OOP)提供了类(Class)和对象(Object)的概念,以支持程序设计的重用性、灵活性和扩展性。 1. 面向对象的概念:...
**PHP面向对象高级编程**指的是在PHP 5及以上版本中,利用其强大的面向对象特性进行更复杂的编程。PHP 5引入了对象模型的重构,包括类、对象、继承、封装和多态等基本概念,同时也增加了如析构函数、抽象类、接口、...
《深入PHP面向对象、模式与实践》第三版是一本针对PHP开发者深入理解面向对象编程、设计模式和实战技巧的专业书籍。作者通过清晰的讲解和丰富的实例,帮助读者提升PHP编程能力,实现更高层次的软件开发。 PHP是一种...
《深入理解PHP 高级技巧、面向对象与核心技术(原书第3版)》是一本专为PHP开发者设计的深入学习书籍,旨在帮助读者掌握PHP的高级特性、面向对象编程以及核心概念。源码文件“phpvqp3_scripts”包含了本书中所讲解的...
在PHP的世界里,面向对象编程(Object-Oriented Programming,简称OOP)是一种重要的编程范式,它在PHP5及更高版本中得到了显著加强。PHP5面向对象的特性为开发者提供了更加灵活和强大的代码组织方式,有助于提升...
《深入PHP:面向对象、模式与实践》是一本专注于PHP编程技术的专业书籍,它涵盖了PHP开发中的核心概念、面向对象编程、设计模式以及最佳实践。这本书对于PHP开发者来说,是提升技能、深化理解的重要资源。 首先,让...
在本项目中,“PHP面向对象(图像计算器)”是一个利用PHP的面向对象编程(OOP)特性构建的图形化计算工具。这个工具旨在帮助用户通过图形界面进行数学计算,提供了一种直观、友好的方式来执行复杂的数学运算。下面将...
资源名称:LAMP大讲堂 PHP 面向对象技术全面讲解 内容简介:1.面向对象的概念2.什么是类,什么是对象,类和对象之间的关系3.什么是面向对象编程呢?4.如何抽象出一个类?5.如何实例化对象。6.如何去使用对象中的...
### PHP的面向对象编程 #### 一、面向对象编程(OOP)简介 面向对象编程(Object Oriented Programming, OOP)是一种程序设计思想,它将...学习和掌握面向对象编程的基本原理和技术对于提高PHP开发效率和质量至关重要。
### PHP面向对象编程知识点概述 #### 一、PHP的发展历程与未来展望 - **起源与发展**:本书首先回顾了PHP的起源,从最初的个人主页工具(PHP2)发展至如今功能强大的服务器端脚本语言。 - **未来展望**:书中还对...
面向对象是目前最流行的一种程序设计和实现思想,无论你是从事企业级开发、互联网应用开发,还是手 机软件开发,都会使用到面向对象的技术;主流的编程语言中,C++,Java,C#,PHP,Python等都是支持 面向对象的语言;...
《深入理解PHP:高级技巧、面向对象与核心技术》是一本专为中初级PHP开发者提升技能而设计的专业书籍。它旨在帮助读者从基础PHP编程跨越到更高级的技术领域,包括优化代码性能、掌握面向对象编程(OOP)概念以及熟悉...
- PhpMyAdmin 是一个基于Web的MySQL数据库管理工具,它广泛采用面向对象编程技术。 - 通过使用PHP的面向对象特性,PhpMyAdmin 能够有效地处理复杂的数据库操作,同时保持了良好的用户界面和用户体验。 - ...
PHP 面向对象技术是 PHP 程序设计中的一种重要编程范式,它引入了类和对象的概念,使得代码更加结构化、易于维护和重用。在 PHP 5 及更高版本中,面向对象得到了增强,支持更多高级特性。 1. **面向对象的概念**: ...