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 相关文章推荐
PHP4 与 MySQL 交互使用
Oct 09 PHP
关于BIG5-HKSCS的解决方法
Mar 20 PHP
PHP 数组入门教程小结
May 20 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
Apr 12 PHP
关于PHP中Object对象的笔记分享
Jun 28 PHP
解析php中curl_multi的应用
Jul 17 PHP
thinkphp的c方法使用示例
Feb 24 PHP
CI(CodeIgniter)框架介绍
Jun 09 PHP
php while循环控制的简单实例
May 30 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
Oct 25 PHP
php 后端实现JWT认证方法示例
Sep 04 PHP
Laravel 验证码认证学习记录小结
Dec 20 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 Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
javascript 播放器 控制
2007/01/22 Javascript
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
2011/07/08 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
javascript中clone对象详解
2014/12/03 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
angular.js中解决跨域问题的三种方式
2017/07/12 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
浅谈Python的文件类型
2016/05/30 Python
Python标准库之collections包的使用教程
2017/04/27 Python
python实现windows下文件备份脚本
2018/05/27 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
使用pygame写一个古诗词填空通关游戏
2019/12/03 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
数学国培研修感言
2014/02/13 职场文书
原料仓管员岗位职责
2014/04/12 职场文书
初一新生军训方案
2014/05/22 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
病假条格式范文
2015/08/17 职场文书
初三数学教学反思
2016/02/17 职场文书
Python django中如何使用restful框架
2021/06/23 Python
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python