php 中self,this的区别和操作方法实例分析

yipeiwu_com6年前PHP代码库

本文实例讲述了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数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

golang与PHP输出excel示例

本文实例讲述了golang与PHP输出excel的方法。分享给大家供大家参考,具体如下: 以前输入excel的时候utf8总是乱码还是用其他方式把utf8转换为gbk才能显示,呵呵,其实...

采用PHP函数memory_get_usage获取PHP内存清耗量的方法

一,函数原型 int memory_get_usage ([ bool $real_usage = false ] ) 二,版本兼容 PHP 4 >= 4.3.2, PHP 5 三...

PHP单例模式定义与使用实例详解

本文实例讲述了PHP单例模式定义与使用。分享给大家供大家参考,具体如下: 先简单的介绍一下单例模式。单例模式就是在应用程序中保持某一个类实例只存在一个,而且不可以受外部环境的影响而生成这...

PHPUnit PHP测试框架安装方法

单元测试是几个现代敏捷开发方法的基础,使得PHPUnit成为许多大型PHP项目的关键工具。这个工具也可以被Xdebug扩展用来生成代码覆盖率报告 ,并且可以与phing集成来自动测试,最...

PHP操作xml代码

复制代码 代码如下:/*获取图片新闻列表*/ function getPicNews($number=5){ require_once 'include/content_class.ph...