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 相关文章推荐
WINDOWS 2000下使用ISAPI方式安装PHP
Sep 05 PHP
用Flash图形化数据(二)
Oct 09 PHP
php下载远程文件类(支持断点续传)
Nov 14 PHP
PHP 开源框架22个简单简介
Aug 24 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
微信利用PHP创建自定义菜单的方法
Aug 01 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
Sep 11 PHP
解决Laravel 不能创建 migration 的问题
Oct 09 PHP
tp5框架基于ajax实现异步删除图片的方法示例
Feb 10 PHP
如何在PHP中生成随机数
Jun 04 PHP
PHP基本语法
Mar 31 PHP
PHP解决高并发问题
Apr 01 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 gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
2020/05/15 PHP
jquery 上下滚动广告
2009/06/17 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
JQuery实现用户名无刷新验证的小例子
2013/03/22 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
2015/03/14 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
2016/12/12 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
layui--js控制switch的切换方法
2019/09/03 Javascript
python 切片和range()用法说明
2013/03/24 Python
使用python开发vim插件及心得分享
2014/11/04 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
Python3 实现随机生成一组不重复数并按行写入文件
2018/04/09 Python
python 读取文本文件的行数据,文件.splitlines()的方法
2018/07/12 Python
python写入文件自动换行问题的方法
2019/07/05 Python
Django实现文件上传下载功能
2019/10/06 Python
德国家具折扣店:POCO
2020/02/28 全球购物
高二政治教学反思
2014/02/01 职场文书
决心书范文
2014/03/11 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
MySQL库表名大小写的选择
2021/06/05 MySQL
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL