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

吾爱主题 阅读:108 2021-09-16 15:24:00 评论:0

本文实例讲述了php 中self,this的区别和操作方法。分享给大家供大家参考,具体如下:

面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能。利用OOP的思想进行PHP的高级编程,对于提高PHP编程能力和规划web开发构架都是很有意义的。

这里我主要谈的是this,self关键字之间的区别。从字面上来理解,分别是指这、自己。先初步解释一下,this是指向当前对象的指针(可以看成C里面的指针),self是指向当前类的指针。我们这里频繁使用指针来描述

因为经常用框架的缘故,所以对php底层的一些运行机制和方法都不会了,所以最近比较喜欢研究这些底层的东西,写的东西虽然不是很好,但是自己一步步实地操作过来的,理解起来也比较容易,现在网上大多数的资料要么就是按照手册抄过来很官方的一些话,要么就是那些千篇一律的文章,确实有些不好理解,所以只能自己动手来熟悉啦

一. self

1.self可以访问本类中的静态属性和静态方法,可以访问父类中的静态属性和静态方法。用self时,可以不用实例化的

?
1 2 3 4 5 6 7 8 9 10 11 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

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 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定义的常量

?
1 2 3 4 5 6 7 8 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联络

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 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程序设计有所帮助。

原文链接:https://www.cnblogs.com/cangqinglang/p/8805155.html

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容