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生成xml简单实例代码
Dec 16 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
Oct 19 PHP
PHP读取PDF内容配合Xpdf的使用
Nov 24 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
php实现在线生成条形码示例分享(条形码生成器)
Dec 30 PHP
PHP内核探索:变量概述
Jan 30 PHP
PHPMailer发送HTML内容、带附件的邮件实例
Jul 01 PHP
php页面缓存方法小结
Jan 10 PHP
学习php设计模式 php实现工厂模式(factory)
Dec 07 PHP
php cookie 详解使用实例
Nov 03 PHP
php框架CodeIgniter使用redis的方法分析
Apr 13 PHP
PHP延迟静态绑定使用方法实例解析
Sep 05 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
JAVA/JSP学习系列之七
2006/10/09 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
JavaScript 事件查询综合
2009/07/13 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
JS实现3D图片旋转展示效果代码
2015/09/22 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
JS验证字符串功能
2017/02/22 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
vue写一个组件
2018/04/09 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
微信小程序自定义轮播图
2018/11/04 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
python使用xmlrpc实例讲解
2013/12/17 Python
python使用scrapy解析js示例
2014/01/23 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
python多线程同步之文件读写控制
2021/02/25 Python
python字符串的拼接方法总结
2019/11/18 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
决心书范文
2014/03/11 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
说明书范文
2014/05/07 职场文书
实现中国梦思想汇报2014
2014/09/13 职场文书
经典爱情感言
2015/08/03 职场文书
会计岗位工作总结
2015/08/12 职场文书
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技