php 中self,this的区别和操作方法实例分析


Posted in PHP onNovember 04, 2019

本文实例讲述了php 中self,this的区别和操作方法。分享给大家供大家参考,具体如下:

面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能。利用OOP的思想进行PHP的高级编程,对于提高PHP编程能力和规划web开发构架都是很有意义的。

这里我主要谈的是this,self关键字之间的区别。从字面上来理解,分别是指这、自己。先初步解释一下,this是指向当前对象的指针(可以看成C里面的指针),self是指向当前类的指针。我们这里频繁使用指针来描述

因为经常用框架的缘故,所以对php底层的一些运行机制和方法都不会了,所以最近比较喜欢研究这些底层的东西,写的东西虽然不是很好,但是自己一步步实地操作过来的,理解起来也比较容易,现在网上大多数的资料要么就是按照手册抄过来很官方的一些话,要么就是那些千篇一律的文章,确实有些不好理解,所以只能自己动手来熟悉啦

一. self

1.self可以访问本类中的静态属性和静态方法,可以访问父类中的静态属性和静态方法。用self时,可以不用实例化的

class self_test {
  static $instance;
  public function __construct(){
    self::$instance = 'instance';//静态属性只能通过self来访问
  }
  public function tank(){
    return self::$instance;//访问静态属性
  }
}
$str = new self_test();
echo $str->tank();

页面输出:

instance

class self_test {
  static $instance;
  public function __construct(){
    self::$instance = 'dell';
  }
  static public function pentium(){
    return self::$instance;//静态方法也可以继续访问静态变量,访问时需要加$
  }
  public function tank(){
    return self::pentium();//访问静态方法pentium()
  }
}
$str = new self_test();
echo $str->tank();

页面输出:

dell

2.self可以访问const定义的常量

class self_test {
  const NAME = 'tancy';
  public function tank(){
    return self::NAME;
  }
}
$str = new self_test();
echo $str->tank();

页面输出:

tancy

二.this

1.this可以调用本类中的方法和属性,也可以调用父类中的可以调的方法和属性,可以说除过静态和const常量,基本上其他都可以使用this联络

class self_test {
  public $public;
  private $private;
  protected $protected;
  public function __construct(){
    $this->public = 'public';
    $this->private = 'private';
    $this->protected = 'protected';
  }
  public function tank(){
    return $this->public;
  }
  public function dell(){
    return $this->private;
  }
  public function datesrt(){
    return $this->protected;
  }
}
$str = new self_test();
echo $str->tank();
echo "</br>";
echo $str->dell();
echo "</br>";
echo $str->datesrt();

页面输出:

public
private
protected

一句话,self是引用静态类的类名,而$this是引用非静态类的实例名。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP和ACCESS写聊天室(八)
Oct 09 PHP
php 读取shell管道传输过来的内容
Mar 01 PHP
PHP数组传递是值传递而非引用传递概念纠正
Jan 31 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 PHP
页面乱码问题的根源及其分析
Aug 09 PHP
CodeIgniter中使用cookie的三种方式详解
Jul 18 PHP
thinkphp文件引用与分支结构用法实例
Nov 26 PHP
php使用PDO方法详解
Dec 27 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
php实现求相对时间函数
Jun 15 PHP
如何把php5.3版本升级到php5.4或者php5.5
Jul 31 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 #PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
Nov 04 #PHP
php ZipArchive实现多文件打包下载实例
Oct 31 #PHP
Laravel框架实现抢红包功能示例
Oct 31 #PHP
laravel框架实现后台登录、退出功能示例
Oct 31 #PHP
TP5框架简单登录功能实现方法示例
Oct 31 #PHP
Laravel框架实现即点即改功能的方法分析
Oct 31 #PHP
You might like
无线电广播的开始
2002/01/30 无线电
用来解析.htgroup文件的PHP类
2012/09/05 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
js轮播图代码分享
2016/07/14 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
python 中的列表解析和生成表达式
2011/03/10 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
中专自我鉴定范文
2013/10/16 职场文书
十佳护士获奖感言
2014/02/18 职场文书
2014年电厂个人工作总结
2014/11/27 职场文书
学习与创新自我评价
2015/03/09 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
html form表单基础入门案例讲解
2021/07/21 HTML / CSS
我的收音机情缘
2022/04/05 无线电