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 相关文章推荐
新版mysql+apache+php Linux安装指南
Oct 09 PHP
PHP session常见问题集锦及解决办法总结
Mar 18 PHP
PHP 实用代码收集
Jan 22 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
php cli 小技巧
Jun 03 PHP
php pki加密技术(openssl)详解
Jul 01 PHP
教你在PHPStorm中配置Xdebug
Jul 27 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
Yii框架学习笔记之应用组件操作示例
Nov 13 PHP
php经典趣味算法实例代码
Jan 21 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
Javascript Global对象
2009/08/13 Javascript
jQuery前端框架easyui使用Dialog时bug处理
2014/12/05 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
2019/01/31 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
Python 40行代码实现人脸识别功能
2017/04/02 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
Python批量更改文件名的实现方法
2017/10/29 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
Python 实现删除某路径下文件及文件夹的实例讲解
2018/04/24 Python
Django model反向关联名称的方法
2018/12/15 Python
python进行TCP端口扫描的实现
2018/12/21 Python
keras中的backend.clip用法
2020/05/22 Python
如何用python批量调整视频声音
2020/12/22 Python
美国创意之家:BulbHead
2017/07/12 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
就业推荐自我鉴定
2013/10/06 职场文书
毕业生找工作推荐信
2013/11/21 职场文书
中专药剂专业应届毕的自我评价
2013/12/27 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
使用python向MongoDB插入时间字段的操作
2021/05/18 Python