本篇文章主要分享一下关于php类中的$this,static,final,const,self这几个关键字使用方法

$this

$this表示当前实例,在类的内部方法访问未声明为const及static的属性时,使用$this->value='phpernote';的形式。常见用法如:$this->属性,$this->方法

  1. <?php
  2. /**
  3. * 有关人类
  4. */
  5. class Person
  6. {
  7.  
  8. private $name='张三';
  9. public $sex;
  10. public function run(){
  11. return $this->name.'能跑';
  12. }
  13. public function length(){
  14. echo $this->run().'800米';
  15. }
  16. }
  17.  
  18. $person=new Person();
  19. $person->length();
  20. ?>

static

声明及调用静态变量如下:

  1. <?php
  2. /**
  3. * 示例
  4. */
  5. class Person
  6. {
  7. static $sex=1;
  8. public $name='张三';
  9.  
  10. static function qianDao(){
  11. return self::$sex++;
  12. }
  13.  
  14. static function printQianDao(){
  15. echo self::qianDao();
  16. }
  17.  
  18. static function printQianDao2(){
  19. echo $this->qianDao();
  20. }
  21.  
  22. static function printQianDao3(){
  23. echo $this->name;
  24. }
  25.  
  26. public function printQianDao4(){
  27. echo $this->name;
  28. }
  29.  
  30. }
  31.  
  32. $person=new Person();
  33. $person->printQianDao();//输出1
  34. Person::printQianDao(); //输出2
  35. $person->printQianDao2();//报错:Using $this when not in object context
  36. $person->printQianDao3();//报错:Using $this when not in object context
  37. $person->printQianDao4();//输出“张三”;
  38. Person::printQianDao4(); //报错1:Non-static method Person::printQianDao4() should not be called statically,报错2:Using $this when not in object context
  39.  
  40. ?>

  

注意事项:

  1.在静态方法内部,不能使用$this(即在静态方法内部只能调用静态成员);

  2.调用静态成员的方法只能是self::方法名或者parent::方法名或者类名::方法名

  3.在类的外部,调用静态方法时,可以不用实例化,直接类名::方法名

  4.静态方法执行之后变量的值不会丢失,只会初始化一次,这个值对所有实例都是有效的

const

定义及调用类的常量如下:

  1. <?php
  2. /**
  3. * 示例
  4. */
  5. class Person
  6. {
  7. const PI=1;
  8.  
  9. static function getPi(){
  10. return self::PI;
  11. }
  12.  
  13. static function printPi(){
  14. echo self::getPi();
  15. }
  16. }
  17. Person::printPi();
  18. ?>
  19.  

注意:调用类的成员是self::PI,而不是self::$PI

self

self表示类本身,指向当前的类。通常用来访问类的静态成员、方法和常量。

php类中的$this,static,const,self这几个关键字使用方法的更多相关文章

  1. static 类成员变量 和 static const类成员变量

    1.使用static类的优点: (1)避免与其他类的成员或者全局变量冲突 (2)可以封装 (3)阅读性好 2.static 数据成员独立于该类的任意对象而存在 static数据成员的类型可以是该成员所 ...

  2. 类里面的非static const成员

    类里面的成员变量可以用const修饰,在只用const不用static修饰的情况下,这种使用的限制比较多 (1)不能定义处初始化,必须在类的构造函数初始化列表里面初始化(虽然在vs中,可以在定义处初始 ...

  3. OC中的extern,static,const

    const的作用: const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p). 被const修饰的变量是只读的. static的作用: 修饰局部变量: 1.延长局部变量的生命周期,程序结束才会 ...

  4. C++类中的static数据成员,static成员函数

    C++类中谈到static,我们可以在类中定义static成员,static成员函数!C++primer里面讲过:static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在, ...

  5. 【c++】类中的const成员

    const成员变量 举个例子 #include <iostream> using namespace std; class A { public: A(int size) : SIZE(s ...

  6. java中final和static

    final的意思是最终的,最后的额,不可变的,在java中也具有相似的含义. final修饰基础数据表示把该数据修饰成常量,意味着不可修改,不可变. final修饰对象的引用的时候,表示该引用不可变, ...

  7. 怎样在一个fragment or 随意类中操作还有一个fragment中的方法

    1 怎样在acitivty中运行fragment中的方法: 首先获得这个Fragment的对象 xxxFragment fragmentObject = (xxxFragment) getFragme ...

  8. Java学习:File类中的过滤器接口

    javaIO类的File类应用:过滤器接口 FilenameFilter和FileFilter都是用来过滤文件的 例如: 过滤以.jpg或者.java结尾的文件. 通过看他们的源码: 通过使用File ...

  9. 【转载】 C++多继承中重写不同基类中相同原型的虚函数

    本篇随笔为转载,原文地址:C++多继承中重写不同基类中相同原型的虚函数. 在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA { public: ...

  10. 关于Integer类中parseInt()和valueOf()方法的区别以及int和String类性的转换.以及String类valueOf()方法

    Integer类中的. 关于parseInt()方法的API文档.  返回的是int类型的 关于valueOf()方法的API文档 返回的是Integer类型的. 关于intValue()方法的API ...

随机推荐

  1. (转)regex类(个人理解)

    regex类(个人理解)   C#regex是正则表达式类用于string的处理,查找匹配的字符串.1,先看一个例子Regex regex=new Regex(@”OK“)://我们要在目标字符串中找 ...

  2. f.lux——自动调整屏幕色温减少眼睛疲劳,长时间玩电脑必备!

    长时间玩电脑的同学肯定会觉得眼睛很难受,而电脑自带的调节亮度的功能通常又不能够满足我们,所以今天就给大家推荐一个保护视力的软件—— flux,这个软件是通过调节色温来达到保护视力的作用,通常在台式机的 ...

  3. passwd命令使用

    2018-03-01  10:01:06 例1:passwd username 直接修改用户的密码普通用户可以且只能修改自己的密码,root用户可以修改任何人的密码[root@localhost ~] ...

  4. python 备份压缩传输

    # -*- coding:utf-8 -*-__author__ = 'colin' #!/usr/bin/env python#-*- coding:utf-8 -*-import os,comma ...

  5. 一个类似抖音 APP 拍摄按钮效果的控件

    TouchButton 一个类似抖音 APP 拍摄按钮效果的控件 效果图预览 用法 <net.angrycode.library.TouchButton android:id="@+i ...

  6. SpringBoot工作机制

    1:前言 回顾探索Spring框架 1.spring ioc IoC其实有两种方式,一种就是DI,而另一种是DL,即Dependency Lookup(依赖查找),前者是当前软件实体被动接受其依赖的其 ...

  7. SpringBoot更改HttpMessageConverters使用FastJson出现乱码问题

    1.出现问题的现象!如下截图,使用SpringBoot 进行开发,接口返回的内容出现中文乱码? 接口内容想要返回的内容: 页面返回内容: 惊喜不?意外不? 为什么出现这个情况?不例外的话,很多同事都是 ...

  8. npm 和bower之间的区别

    (一) npm是node js的包管理器,用来下载安装node js的第三方工具包,也可以用来发布你自己开发的工具包.通过npm可以安装bower,命令如下: npm install -g bower ...

  9. python自学日志--基础篇(1)

    从认识python,到学习python,中间经历了挺长一段时间的心理挣扎.人总是对未知的事物有着天生的恐惧感,但是,人又是对未知充斥好奇.所以在最后,还是推开了这扇门,开始学习python. pyth ...

  10. [luogu1402]酒店之王_网络流

    酒店之王 luogu-1402 题目大意:有n个人,p道菜,q个房间,每个人喜欢吃一些菜.喜欢住一些房间,如果一个人即住到了他喜欢的房间有吃到了他喜欢的菜,就对答案贡献++,求最大贡献. 注释:1&l ...