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 相关文章推荐
Apache2 httpd.conf 中文版
Dec 06 PHP
mysql+php分页类(已测)
Mar 31 PHP
PHP Mysql编程之高级技巧
Aug 27 PHP
PHP strtr() 函数使用说明
Nov 21 PHP
有关JSON以及JSON在PHP中的应用
Apr 09 PHP
一个简洁实用的PHP缓存类完整实例
Jul 26 PHP
php内存缓存实现方法
Jan 24 PHP
10款PHP开源商城系统汇总介绍
Jul 23 PHP
PHP类的特性实例分析
Sep 28 PHP
PHP面向对象程序设计OOP继承用法入门示例
Dec 27 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
PHP使用ActiveMQ实现消息队列的方法详解
2019/05/31 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
2015/07/17 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
layui数据表格 table.render 报错的解决方法
2019/09/29 Javascript
python3+PyQt5实现自定义分数滑块部件
2018/04/24 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
对Python中内置异常层次结构详解
2018/10/18 Python
Python实现转换图片背景颜色代码
2020/04/30 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
python中time tzset()函数实例用法
2021/02/18 Python
HTML5 实现图片上传预处理功能
2020/02/06 HTML / CSS
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
Tea Collection官网:一家位于旧金山的童装公司
2020/08/07 全球购物
中学家长会邀请函
2014/01/17 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
学生偷窃检讨书
2014/09/25 职场文书
个人向公司借款协议书
2014/10/09 职场文书
2014年质检工作总结
2014/11/26 职场文书
旷课检讨书
2015/01/26 职场文书
结婚通知短信大全
2015/04/17 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
小学英语课教学反思
2016/02/15 职场文书
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL