php中self和$this还有parent的区别
1.self代表类,$this代表对象
2.能用$this的地方一定使用self,能用self的地方不一定能用$this
3.parent只能调用静态属性,并且可以调用父类中公有和受保护的方法
静态的方法中不能使用$this,静态方法给类访问的。
今天在使用静态方法的时候,使用了$this去调用对象的属性,导致曝出错误信息,在网上查询了手册和百度,
发现大部分回答只是说明了在静态方法中不允许使用$this,只能使用self,较为靠谱的回答说明是$this是实例化对象的指针,self是对象的指针。
针对以上信息,综合自己的学习知识和网上搜索结果作下图:

其中,我们可以明显看到,self调用的类的指针,而非实例化后的对象指针,静态变量和静态方法始终属于类,而非属于实例化后的对象,因此在静态方法中无法使用$this,因为此时所处的位置是类所在的指针,只能使用self调用静态方法或者静态变量。
如果要在静态方法中,强制使用函数的其他方法,则只能先实例化一个新的对象,然后再使用该对象的方法。
综上所述,self调用的是类,而$this调用的则是实例化的对象。下面是代码。
php中self和$this还有parent的区别的更多相关文章
- PHP中::、->、self、parent::、$this操作符的区别
在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者 ...
- PHP面向对象中 static:: 与 self:: parent:: $this-> 的区别
很多好几年工作经验的PHP工程师,对PHP面向对象中 static:: .self::.parent::.$this-> 的定义和使用都不清晰,特做详细梳理: static:: 可以访问全局作 ...
- php中的public、protected、private三种访问控制模式及self和parent的区别(转)
php的public.protected.private三种访问控制模式的区别 public: 公有类型 在子类中可以通过self::var调用public方法或属性,parent::method调用 ...
- PHP中this,self,parent的区别
{一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能.利用OOP的思想进行P ...
- php中this、self、parent解析
概述: this:指向类当前对象的指针:self:指向类本身,一般指向类中的静态变量:parent:指向父类的指针,一般使用parent来调用父类的构造函数. 下面通过程序详细介绍: 1.this & ...
- 转 PHP编程过程中需要了解的this,self,parent的区别
{一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object Oriented Programming)现已经成为编程人员的一项基本技能.利用OOP的思想进行 ...
- 转: PHP中this,self,parent的区别
{一}PHP中this,self,parent的区别之一this篇 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能.利用OOP的思想进行P ...
- self,parent,this区别
我容易混淆public,private,protected,还容易混淆this,self这些东西.前面已经写了一篇关于public,private,protected博文了,下面来说一下this,se ...
- 【PHP】this,self,parent的区别(转)
一. 定义&区别 self: 指向当前类的指针,self是不指向任何已经实例化的对象,一般self使用来指向类中的静态变量. this: 指向当前对象的指针,使用parent来调用父类的构造函 ...
- PHP中private、public、protected的区别详解
先简单粗俗的描述下:public 表示全局,类内部外部子类都可以访问:private表示私有的,只有本类内部可以使用:protected表示受保护的,只有本类或子类或父类中可以访问: 再啰嗦的解释下: ...
随机推荐
- 手写g++编译命令行工具笔记
基本想法 为什么要写 CPPRUN: 如果要开警告开关,敲完整的编译代码还挺麻烦的 想要编译与运行一次性完成 Windows 的控制台本来是 cmd,后来有了 Powershell,但是后者不能用 & ...
- 用Nodemailer发个邮件不算难?
公司一直用邮箱做一些部门间协调的沟通留存,于是乎想用点"编程思维"做些"工作流"来自动化处理:但是公司用的邮箱有点难登呐! 选用的Nodejs 作为实现语言,那 ...
- ios打开第三方地图app
https://www.jianshu.com/p/691dd39cb28c [ios调起 地图app]分三步: 1.配置相对于地图app的LSApplicationQueriesSchemes白名单 ...
- Go--生成excel表格,读取excel表格数据
先下载第三方依赖包: go get -u github.com/xuri/excelize/v2 代码: package main import ( "fmt" "git ...
- socket-消息发送实战
1. 函数用法 Handle.oobtainMessage(int what ,int arg1,int arg2,object obj) 2. 消息内容 3. 代码组合(隐私模式开关) 3.1 ...
- 1、app自动化的底层逻辑,adb及monkey和稳定性测试
app自动化的过程中,底层逻辑是计算机通过adb与移动设备进行沟通,告诉移动设备,进行什么操作: 一.概念: Andriod调试桥(adb),是一种命令行工具,可以让我们与设备进行通讯. 二.adb安 ...
- [部署日记]Android Studio在同步Gradle的时候提示Could not resolve com.android.tools.build:gradle:7.0.4
一波未平一波又起,好家伙直呼好家伙. 问题来源: 在想好APP起什么名字,放哪里后,打开模拟器准备着手处理时发现, Gradle sync出问题了... "Build"窗口提示: ...
- java中取整数绝对值_Java之——位运算求整数绝对值通过下面的位运算可以得到一个整数的绝对值
public int abs( int a ) {return (a + (a >> 31)) ^ (a >> 31) ;//前半部分-1或+0,后半部分取反 } a为正数的情 ...
- MySQL 的limit
题目 limit:从倒数第二行开始,往前查找一行
- Attention:何为注意力机制?
本文来自公众号"AI大道理" 人类利用有限的注意力资源从大量信息中快速筛选出高价值信息,这是人类在长期进化中形成的一种生存机制,人类视觉注意力机制极大地提高了视觉信息处理的效 ...