首页 > 编程语言 >【web 开发】PHP 特殊的对象引用之 "$this"

【web 开发】PHP 特殊的对象引用之 "$this"

时间:2023-06-08 22:33:41浏览次数:54  
标签:web run 对象 成员 访问 引用 PHP 方法

前言

前面我们介绍了面向对象相关的内容,我们了解到访问对象的成员必须通过对象的引用来完成.如果在对象的内部,在对象的成员方法中访问自己对象中的成员属性,或者访问自己对象内其他成员方法时怎么处理呢?

答案只有一个,不管是在对象的外部还是在对象内部,访问对象中的成员都必须使用对象的引用变量,但是对象创建完成以后,对象的引用名称无法在对象的方法中找到. 如果在对象的方法中再次使用new关键字创建一个对象则是另一 个对象,调用的成员也是另一个新创建对象的成员。而且对象一旦被创建,在对象中的每个成员方法里面都会存在一个特殊的对象引用“$this . 成员方法属于哪个对象,$this引用就代表哪个对象,专门用来完成对象内部成员之间的访问. this的本意就是“这个”的意思,就像每个人都可以使用第一人称代词 “我"代表自己一样. 比如,别人想访问你的年龄,就必须使用“张三的年龄”的形式,相当于在对象外部使用引用名称“张三”访问它内部的成员属性“年龄”.  如果自己想说出自己的年龄,则使用“ 我的年龄”的形式,相当于在对象的内部使用引用名称“我”访问自己内部的成员。

代码实践:是骡子是马拉出来溜溜

接着我们通过具体例子来介绍相关的使用情况, 比如,在类Person中声明了两个方法say()和run(),通过类Person实例化的三个实例对象$person1、$person2和$person3中都会存在say()和run()这两个成员方法,则每个对象中的这两个成员方法各自存在一个$this 引用。在对象$person1的两个成员方法中的$this引用代表$person1,在对象$person2的两个成员方法中的$this引用代表$person2,在对象$person3的两个成员方法中的$this引用代表$person3,可以明显看出,特殊的对象引用$this 就是在对象内部的成员方法中,代表着“本对象”的一个引用,但只能在对象的成员方法中使用。不管是在对象内部使用$this访问自己对象内部的成员,还是在对象外部通过对象的引用名称访问对象中的成员,都需要使用特殊的运算符号来完成访问。下面我们通过代码实例来介绍$this的使用,定义一个Animals类,在声明类Animals时,成员方法eat()中使用$this 引用访问自己对的内部的所有成员属性。然后调用每个对象中的eat()方法和run()方法,让每动物都能向别人介绍自己的名字、年龄和喜欢吃的事物。具体代码如下所示:

【web 开发】PHP 特殊的对象引用之 "$this"_实例化

<?php
class Animals{//定义一个动物类
	var $name; //定义动物名称
	var $age; //动物年龄
	var $food; //动物年龄
	
	//定义动物吃饭的成员方法
	function eat(){
		echo '我是一只' . $this->name . ', 已经' .  $this->age . '岁了,我喜欢吃' . $this->food . '<br>'; //使用$this访问类中的成员属性
		echo '我是一只' . $this->name . ', 我喜欢跑跑跳跳<br>';//使用$this访问类中的成员属性
	}
	
	//定义动物跑动的方法
	function run(){
		echo '我是一只' . $this->name . ', 我喜欢跑跑跳跳<br>';//使用$this访问类中的成员属性
	}
}

//实例化Animals类
$animal1 = new Animals();
$animal2 = new Animals();
$animal3 = new Animals();

//给类中的成员属性赋值
$animal1->name = '小猫';
$animal1->age = 2;
$animal1->food = '鱼干';


//给类中的成员属性赋值
$animal2->name = '小羊';
$animal2->age = 5;
$animal2->food = '草';


//给类中的成员属性赋值
$animal3->name = '小兔子';
$animal3->age = 3;
$animal3->food = '胡萝卜';

//通过实例化的对象访问类中的eat()方法
$animal1->eat();
$animal2->eat();
$animal3->eat();

//通过实例化的对象访问类中的run()方法
$animal1->run();
$animal2->run();
$animal3->run();

执行结果如下图:

【web 开发】PHP 特殊的对象引用之 "$this"_成员方法_02

总结

在上面的代码中,$animal1,$animal2,$animal3三个对象中都有eat()和run()这两个成员方法,如需访问哪个对象中的成员方法eat(),方法中的$this引用就代表的是访问哪个对象,并且通过$this访问自己内部相应的成员属性.如果想在对象的成员方法eat()中调用自己的另一个成员方法run()方法也是可以的,同样是在eat()方法中使用$this->run()的方式来完成对象的访问.

标签:web,run,对象,成员,访问,引用,PHP,方法
From: https://blog.51cto.com/micai01/6443905

相关文章

  • (总结)Web性能压力测试工具之Siege详解
    PS:Siege是一款开源的压力测试工具,设计用于评估WEB应用在压力下的承受能力。可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。siege可以从您选择的预置列表中请求随机的URL。所以siege可用于仿真用户请求负载,而......
  • webservice: Could not initialize Service NoSuchMethodException getPortClassMap()
    webservicejaxws webservice中碰到的问题:CouldnotinitializeServiceNoSuchMethodExceptiongetPortClassMap()情况如下:A应用是用jaxws编写的webservice客户端,单独运行该客户端成功。B应用是基于xfire的webservice服务,在B中调用A,结果在构造一个Service类的似乎出了上......
  • 2023春招:Javaweb面试锦囊
    cookie和session的区别?(必会)存储位置不同cookie存放在客户端电脑,是一个磁盘文件。Ie浏览器是可以从文件夹中找到。session是存放在服务器内存中的一个对象。chrome浏览器进行安全处理,只能通过浏览器找到。Session是服务器端会话管理技术,并且session就是cookie实现的。......
  • web基础漏洞-sql注入
    1、介绍sql注入,是用户提交的数据,服务端接收后未经过严格检查,将其直接拼接到sql语句中,交给sql应用执行,超出了开发者预期的sql语句结构,从而造成危害。2、详解(1)从数据来说,任何前端提交的数据,都有可能成为sql注入的参数。包括get、post、及其它请求方法,包括url、请求头部和请求体......
  • .net WebUploader 分片上传
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传  可以带参数        [HttpPost("upload")]        publicJsonResultuploadProject(I......
  • 如何在.net6webapi中实现自动依赖注入
    IOC/DIIOC(InversionofControl)控制反转:控制反正是一种设计思想,旨在将程序中的控制权从程序员转移到了容器中。容器负责管理对象之间的依赖关系,使得对象不再直接依赖于其他对象,而是通过依赖注入的方式来获取所需的资源。ID(DependencyInjection)依赖注入:他是IOC的具体实现方式之......
  • web接收websocket
    data(){return{websock:null,wsuri:"ws://192.168.2.22:8025/test/fff",//WebSocket的后台地址actiones:{ssid:"fff"},//传入后台的数据};},created(){this.initWebSocket();//开启WebSocket},destroyed(......
  • php框架--php框架的连贯查询实现原理
    如果你是一名使用过多种框架的php程序员,你一定见过这样的查询语句:$result=$mysqlDb->limit(’0,10′)->order(‘iddesc’)->findall();上面的查询语句,连续使用->操作符进行操作,并最终返回一个查询结果,那么这是如何实现的呢。 我们来简单分析一下:->操作符用来访问对象,上面的语句......
  • php 备份数据库 Backup Your MySQL Database Using PHP
    代码:<?phpbackup_tables('localhost','root','root','mysql');/*backupthedbORjustatable*/functionbackup_tables($host,$user,$pass,$name,$tables='*'){ $link=mysql_connect($host,$user,$pas......
  • 【京东JD电商平台api接口】获得JD商品详情接口PHP调用演示示例
    京东提供了商品详情API接口,可以帮助开发者获取到指定商品的详细信息,例如价格、库存、销售量、详情描述、图片等。具体获取方式如下:1. 首先需要在开放平台上申请API接口密钥。2.登录API接口调用地址。3. 根据API接口文档中的参数要求,构造API接口请求的参数。4. 将参数进行签......