php类中的$this,static,const,self这几个关键字使用方法
本篇文章主要分享一下关于php类中的$this,static,final,const,self这几个关键字使用方法
$this
$this表示当前实例,在类的内部方法访问未声明为const及static的属性时,使用$this->value='phpernote';的形式。常见用法如:$this->属性,$this->方法
- <?php
- /**
- * 有关人类
- */
- class Person
- {
- private $name='张三';
- public $sex;
- public function run(){
- return $this->name.'能跑';
- }
- public function length(){
- echo $this->run().'800米';
- }
- }
- $person=new Person();
- $person->length();
- ?>
static
声明及调用静态变量如下:
- <?php
- /**
- * 示例
- */
- class Person
- {
- static $sex=1;
- public $name='张三';
- static function qianDao(){
- return self::$sex++;
- }
- static function printQianDao(){
- echo self::qianDao();
- }
- static function printQianDao2(){
- echo $this->qianDao();
- }
- static function printQianDao3(){
- echo $this->name;
- }
- public function printQianDao4(){
- echo $this->name;
- }
- }
- $person=new Person();
- $person->printQianDao();//输出1
- Person::printQianDao(); //输出2
- $person->printQianDao2();//报错:Using $this when not in object context
- $person->printQianDao3();//报错:Using $this when not in object context
- $person->printQianDao4();//输出“张三”;
- Person::printQianDao4(); //报错1:Non-static method Person::printQianDao4() should not be called statically,报错2:Using $this when not in object context
- ?>
注意事项:
1.在静态方法内部,不能使用$this(即在静态方法内部只能调用静态成员);
2.调用静态成员的方法只能是self::方法名或者parent::方法名或者类名::方法名
3.在类的外部,调用静态方法时,可以不用实例化,直接类名::方法名
4.静态方法执行之后变量的值不会丢失,只会初始化一次,这个值对所有实例都是有效的
const
定义及调用类的常量如下:
- <?php
- /**
- * 示例
- */
- class Person
- {
- const PI=1;
- static function getPi(){
- return self::PI;
- }
- static function printPi(){
- echo self::getPi();
- }
- }
- Person::printPi();
- ?>
注意:调用类的成员是self::PI,而不是self::$PI
self
self表示类本身,指向当前的类。通常用来访问类的静态成员、方法和常量。
php类中的$this,static,const,self这几个关键字使用方法的更多相关文章
- static 类成员变量 和 static const类成员变量
1.使用static类的优点: (1)避免与其他类的成员或者全局变量冲突 (2)可以封装 (3)阅读性好 2.static 数据成员独立于该类的任意对象而存在 static数据成员的类型可以是该成员所 ...
- 类里面的非static const成员
类里面的成员变量可以用const修饰,在只用const不用static修饰的情况下,这种使用的限制比较多 (1)不能定义处初始化,必须在类的构造函数初始化列表里面初始化(虽然在vs中,可以在定义处初始 ...
- OC中的extern,static,const
const的作用: const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p). 被const修饰的变量是只读的. static的作用: 修饰局部变量: 1.延长局部变量的生命周期,程序结束才会 ...
- C++类中的static数据成员,static成员函数
C++类中谈到static,我们可以在类中定义static成员,static成员函数!C++primer里面讲过:static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在, ...
- 【c++】类中的const成员
const成员变量 举个例子 #include <iostream> using namespace std; class A { public: A(int size) : SIZE(s ...
- java中final和static
final的意思是最终的,最后的额,不可变的,在java中也具有相似的含义. final修饰基础数据表示把该数据修饰成常量,意味着不可修改,不可变. final修饰对象的引用的时候,表示该引用不可变, ...
- 怎样在一个fragment or 随意类中操作还有一个fragment中的方法
1 怎样在acitivty中运行fragment中的方法: 首先获得这个Fragment的对象 xxxFragment fragmentObject = (xxxFragment) getFragme ...
- Java学习:File类中的过滤器接口
javaIO类的File类应用:过滤器接口 FilenameFilter和FileFilter都是用来过滤文件的 例如: 过滤以.jpg或者.java结尾的文件. 通过看他们的源码: 通过使用File ...
- 【转载】 C++多继承中重写不同基类中相同原型的虚函数
本篇随笔为转载,原文地址:C++多继承中重写不同基类中相同原型的虚函数. 在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数.下面就是一个例子: class CBaseA { public: ...
- 关于Integer类中parseInt()和valueOf()方法的区别以及int和String类性的转换.以及String类valueOf()方法
Integer类中的. 关于parseInt()方法的API文档. 返回的是int类型的 关于valueOf()方法的API文档 返回的是Integer类型的. 关于intValue()方法的API ...
随机推荐
- (转)regex类(个人理解)
regex类(个人理解) C#regex是正则表达式类用于string的处理,查找匹配的字符串.1,先看一个例子Regex regex=new Regex(@”OK“)://我们要在目标字符串中找 ...
- f.lux——自动调整屏幕色温减少眼睛疲劳,长时间玩电脑必备!
长时间玩电脑的同学肯定会觉得眼睛很难受,而电脑自带的调节亮度的功能通常又不能够满足我们,所以今天就给大家推荐一个保护视力的软件—— flux,这个软件是通过调节色温来达到保护视力的作用,通常在台式机的 ...
- passwd命令使用
2018-03-01 10:01:06 例1:passwd username 直接修改用户的密码普通用户可以且只能修改自己的密码,root用户可以修改任何人的密码[root@localhost ~] ...
- python 备份压缩传输
# -*- coding:utf-8 -*-__author__ = 'colin' #!/usr/bin/env python#-*- coding:utf-8 -*-import os,comma ...
- 一个类似抖音 APP 拍摄按钮效果的控件
TouchButton 一个类似抖音 APP 拍摄按钮效果的控件 效果图预览 用法 <net.angrycode.library.TouchButton android:id="@+i ...
- SpringBoot工作机制
1:前言 回顾探索Spring框架 1.spring ioc IoC其实有两种方式,一种就是DI,而另一种是DL,即Dependency Lookup(依赖查找),前者是当前软件实体被动接受其依赖的其 ...
- SpringBoot更改HttpMessageConverters使用FastJson出现乱码问题
1.出现问题的现象!如下截图,使用SpringBoot 进行开发,接口返回的内容出现中文乱码? 接口内容想要返回的内容: 页面返回内容: 惊喜不?意外不? 为什么出现这个情况?不例外的话,很多同事都是 ...
- npm 和bower之间的区别
(一) npm是node js的包管理器,用来下载安装node js的第三方工具包,也可以用来发布你自己开发的工具包.通过npm可以安装bower,命令如下: npm install -g bower ...
- python自学日志--基础篇(1)
从认识python,到学习python,中间经历了挺长一段时间的心理挣扎.人总是对未知的事物有着天生的恐惧感,但是,人又是对未知充斥好奇.所以在最后,还是推开了这扇门,开始学习python. pyth ...
- [luogu1402]酒店之王_网络流
酒店之王 luogu-1402 题目大意:有n个人,p道菜,q个房间,每个人喜欢吃一些菜.喜欢住一些房间,如果一个人即住到了他喜欢的房间有吃到了他喜欢的菜,就对答案贡献++,求最大贡献. 注释:1&l ...