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新手上路(三)
Oct 09 PHP
mysql总结之explain
Feb 27 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
yii操作session实例简介
Jul 31 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
PHP中set error handler函数用法小结
Nov 11 PHP
优化WordPress中文章与评论的时间显示
Jan 12 PHP
PHP设置头信息及取得返回头信息的方法
Jan 25 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
Mar 18 PHP
PHP Mysqli 常用代码集合
Nov 12 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 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 FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
JavaScript浮点数及运算精度调整详解
2016/10/21 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
浅谈ajax在jquery中的请求和servlet中的响应
2018/01/22 jQuery
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
详解python之heapq模块及排序操作
2019/04/04 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
Python如何调用JS文件中的函数
2019/08/16 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
Python使用type动态创建类操作示例
2020/02/29 Python
Python集成开发工具Pycharm的安装和使用详解
2020/03/18 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
描述内存分配方式以及它们的区别
2016/10/15 面试题
JAVA中运算符的分类及举例
2015/09/12 面试题
给校长的建议书600字
2014/05/15 职场文书
体育教师个人总结
2015/02/09 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
公司周年庆寄语
2019/06/21 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
教你利用python实现企业微信发送消息
2021/05/23 Python
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
Python+tkinter实现高清图片保存
2022/03/13 Python