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中的字符串函数
Nov 24 PHP
PHP中对用户身份认证实现两种方法
Jun 04 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
Jan 06 PHP
php连接mssql数据库的几种方法
Feb 21 PHP
php实现与erlang的二进制通讯实例解析
Jul 23 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
May 04 PHP
PHP批量删除jQuery操作
Jul 23 PHP
PHP高精确度运算BC函数库实例详解
Aug 15 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
Mar 25 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
Jul 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
smarty基础之拼接字符串的详解
2013/06/18 PHP
10个简化PHP开发的工具
2014/12/25 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
2019/12/31 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
jquery分页插件AmSetPager(自写)
2013/04/15 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
Javascript 普通函数和构造函数的区别
2016/11/05 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
vue2.0 实现页面导航提示引导的方法
2018/03/13 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
Python实现的下载8000首儿歌的代码分享
2014/11/21 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
python3字符串操作总结
2019/07/24 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
python标准库OS模块详解
2020/03/10 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
BookOutlet加拿大:在网上书店购买廉价折扣图书和小说
2018/10/05 全球购物
阿拉伯书店:Jamalon
2019/07/24 全球购物
应聘医学检验人员自荐信
2013/09/27 职场文书
会计毕业自我鉴定
2014/02/05 职场文书
社区健康教育实施方案
2014/03/18 职场文书
2014年司法局工作总结
2014/12/11 职场文书
员工自我工作评价
2015/03/06 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python