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 相关文章推荐
延长phpmyadmin登录时间的方法
Feb 06 PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
php上传中文文件名乱码问题处理方案
Feb 03 PHP
php通过array_shift()函数移除数组第一个元素的方法
Mar 18 PHP
php获取twitter最新消息的方法
Apr 14 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 PHP
php mongodb操作类 带几个简单的例子
Aug 25 PHP
PHP类的特性实例分析
Sep 28 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
laravel使用数据库测试注意事项
Apr 10 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
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
使用jQuery仿苹果官网焦点图特效
2014/12/23 Javascript
jquery ajax 如何向jsp提交表单数据
2015/08/23 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
python持久性管理pickle模块详细介绍
2015/02/18 Python
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
python如何为创建大量实例节省内存
2018/03/20 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
python docx 中文字体设置的操作方法
2018/05/08 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
常用的10个Python实用小技巧
2020/08/10 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
一个基于canvas的移动端图片编辑器的实现
2020/10/28 HTML / CSS
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
校园广播稿500字
2014/02/04 职场文书
法学专业求职信
2014/07/15 职场文书
申报材料格式
2014/12/30 职场文书
python入门之算法学习
2021/04/22 Python
python井字棋游戏实现人机对战
2022/04/28 Python