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.MVC的模板标签系统(四)
Sep 05 PHP
PHP优于Node.js的五大理由分享
Sep 15 PHP
php数组转换js数组操作及json_encode的用法详解
Oct 26 PHP
php的zip解压缩类pclzip使用示例
Mar 14 PHP
ThinkPHP使用smarty模板引擎的方法
Jul 01 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
Dec 22 PHP
Yii框架创建cronjob定时任务的方法分析
May 23 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
Aug 07 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 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下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
laravel学习教程之关联模型
2016/07/30 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
2019/03/11 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
jQuery知识点整理
2015/01/30 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
BootStrap selectpicker
2016/06/20 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
2016/11/23 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
JS实现手风琴特效
2020/11/08 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
python matlibplot绘制多条曲线图
2021/02/19 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
销售代表求职自荐信
2013/10/01 职场文书
物流专业毕业生推荐信范文
2013/11/18 职场文书
教师师德承诺书
2014/03/26 职场文书
2014大学校园光棍节活动策划书
2014/09/29 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
年会邀请函的格式及范文五篇
2019/11/02 职场文书
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server