php中static和const关键字用法分析
本文实例讲述了php中static和const关键字用法。分享给大家供大家参考,具体如下:
static关键字在类中描述的成员属性和成员函数都是静态的。
static成员能限制外部的访问,因为static成员是属于类的,而不是属于任何对象实例。
从内存的角度讲,其中对象是放在“堆内存”中,对象的引用是放在“栈内存”中,而静态成员被放在初始化静态段中,在类的第一次加载的时候加入的。可以让对内存中的所有对象所共享。如下图所示:
<?php class Person{ public static $myCountry = "中国"; public static function say(){ echo "我的祖国是:".self::$myCountry."<br>"; } } //输出静态属性 echo Person::$myCountry."<br>"; //调用静态方法 Person::say(); //修改静态属性 Person::$myCountry = "中国-江苏"; echo Person::$myCountry."<br>"; ?>
输出结果为:
中国 我的祖国是:中国 中国-江苏
类中的静态方法只能访问类的静态的属性。类中的静态的方法是不能访问类的非静态的成员的。我们用self来访问类中的静态属性。self与this相似,只不过self代表静态方法所在的类,this相似,只不过self代表静态方法所在的类,this引用指针,代表调用此方法的对象。静态方法是不用对象调用的,所有就没有this这个引用了。没有this这个引用了。没有this,就没办法调用类中的其他的成员属性。
const是一个定义常量的关键字。在类里面常用const来定义常量。用“const”修饰的成员属性的访问方式和“static”修饰的成员访问的方式差不多,也是使用“类名”,在方法里面使用“self”关键字。但是不用使用“$”符号,也不能使用对象来访问。
<?php class MyClass{ const constant = 'constant value'; function showConstant(){ //方法中调用常量,没有$ echo self::constant."<br>"; } } //类直接调用,没有$ echo MyClass::constant."<br>"; $class = new MyClass(); $class ->showConstant(); ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
相关推荐
-
php面向对象全攻略 (十) final static const关键字的使用
14.final 关键字的应用 这个关键字只能用来定义类和定义方法,不能使用final 这个关键字来定义成员属性,因 为final 是常量的意思,我们在PHP 里定义常量使用的是define()函数,所以不能使用final 来 定义成员属性. 使用final 关键标记的类不能被继承: 代码片段 final class Person{ - - } class Student extends Person{ } 会出现下面错误: Fatal error: Class Student may not
-
深入理解PHP中的static和yield关键字
前言 本文主要给大家介绍了关于PHP中static和yield关键字的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 先来说说 static 关键字.本篇只讲静态方法的使用与后期绑定的知识点. static 什么时候用来修饰方法 static 关键字大家都知道是用来修饰方法与属性的. 那么大家在项目中会在哪些场景下使用它? 我遇到过几个项目,要求所有的方法全部 static 化,当然控制器方法不能这么干.原因之一就是:静态方法执行效率高?那么我们基于此来分析一下. 首
-
开启PHP Static 关键字之旅模式
声明类成员或方法为static,就可以不实例化类而直接访问.不能通过一个对象来访问其中的静态成员(静态方法除外). 为了兼容PHP4,如果没有指定"可见性",属性和方法默认为public. 由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用. 静态属性不可以由对象通过->操作符来访问. 用::方式调用一个非静态方法会导致一个E_STRICT级别的错误. 就像其它所有的PHP静态变量一样,静态属性只能被初始化为一个字符值或一个常量,不能使用表达式. 所以你可
-
PHP中static关键字以及与self关键字的区别
概述 正在学习设计模式,之前有一篇文章关于单例模式的文章,重新读了这篇文章,发现对static关键字掌握不是很牢靠,重新温习一下. static关键字 PHP手册里对static关键字的介绍如下: 复制代码 代码如下: Declaring class properties or methods as static makes them accessible without needing an instantiation of the class. A property declared as
-
理解PHP5中static和const关键字的区别
PHP5中加入了很多面向对象的思想,PHP5的面向对象比较接近Java的面向对象思想.我们这里对PHP5中的static和const关键字作用进行一下描述,希望对学习PHP5的朋友有帮助. (1) static static关键字在类中是,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例,其他类是无法访问的,只对类的实例共享,能一定程序对该成员尽心保护.类的静态变量,非常类似全局变量,能够被所有类的实例共享,类的静态方法也是一样的,类
-
PHP中static关键字原理的学习研究分析
看PHP手册的时候发现了下面这样一段代码: 复制代码 代码如下: <?php function Test() { static $count = 0; $count++; echo $count; if ($count < 10) { Test(); } $count--; } ?> 执行结果如下: 这是一个递归的函数,声明的静态变量count记录次数,输出1~10. 我在看的时候有个疑惑,递归调用的时候 static $count = 0; 语句会重复执行,这为什么不会导致count变
-
php Static关键字实用方法
为了兼容PHP4,如果没有指定"可见性",属性和方法默认为public. 由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用. 静态属性也可以由对象通过->操作符来访问. 用::方式调用一个非静态方法会导致一个E_STRICT级别的错误. 就像其它所有的PHP静态变量一样,静态属性只能被初始化为一个字符值或一个常量,不能使用表达式. 所以你可以把静态属性初始化为整型或数组,但不能指向另一个变量或函数返回值,也不能指向一个对象. PHP5.3.0之后,我们可
-
php类中的$this,static,final,const,self这几个关键字使用方法
本篇文章主要分项了一下关于php类中的$this,static,final,const,self这几个关键字使用方法. $this $this表示当前实例,在类的内部方法访问未声明为const及static的属性时,使用$this->value='phpernote';的形式.常见用法如: $this->属性 $this->方法 举例如下: <?php class MyClass{ private $name; public function __construct($name){
-
php中static和const关键字用法分析
本文实例讲述了php中static和const关键字用法.分享给大家供大家参考,具体如下: static关键字在类中描述的成员属性和成员函数都是静态的. static成员能限制外部的访问,因为static成员是属于类的,而不是属于任何对象实例. 从内存的角度讲,其中对象是放在"堆内存"中,对象的引用是放在"栈内存"中,而静态成员被放在初始化静态段中,在类的第一次加载的时候加入的.可以让对内存中的所有对象所共享.如下图所示: <?php class Person
-
PHP面向对象程序设计中的self、static、parent关键字用法分析
本文实例讲述了PHP面向对象程序设计中的self.static.parent关键字用法.分享给大家供大家参考,具体如下: 看到php里面有关于后期静态绑定的内容,虽然没有完全看懂,但是也收获不少东西. php官方手册介绍: http://php.net/manual/zh/language.oop5.late-static-bindings.php 不存在继承的时候 不存在继承的意思就是,就书写一个单独的类来使用的时候.self和static在范围解析操作符 (::) 的使用上,并无区别. 在静
-
C#中static静态变量的用法实例
本文实例讲述了C#中static静态变量的用法.分享给大家供大家参考.具体如下: 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析构函数或类以外的类型 静态全局变量 定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量. 特点: ① .该变量在全局数据区分配内存. ② .初始化:如果不显式初始化,那么将被隐式初始化为0. 静态局部变量 定义:在局部
-
C++中引用和const关键字介绍
目录 引用 常引用 const关键字用法 1)定义常量 2)定义常量指针 3)定义常引用 总结 引用 下面的写法定义了一个引用,并将其初始化为引用某个变量.类型名 & 引用名 = 某变量名; int n = 4; int & r = n; // r 引用了n,r的类型是 int & 某个变量的引用,等价于这个变量,相当于该变量的一个别名. int n = 7; int & r = n; // r 引用了n,r和n就是一回事 r = 4; cout << r; /
-
JavaScript中var let const的用法有哪些区别
目录 1.重复声明 1.1 var 1.2 let 1.3 const 2.变量提升 2.1 var 2.2 let 2.3 const 3.暂时性死区 3.1 var 3.2 let 3.3 conset 4. window对象的属性和方法 5.块级作用域 1.重复声明 var支持重复声明,let.const不支持重复声明. 1.1 var var a = 1; var a = 2; console.log(a); 输出结果: 2 1.2 let let b = 3; let b = 4; c
-
C#中var关键字用法分析
本文实例分析了C#中var关键字用法.分享给大家供大家参考.具体方法如下: C#关键字是伴随着.NET 3.5以后,伴随着匿名函数.LINQ而来, 由编译器帮我们推断具体的类型.总体来说,当一个变量是局部变量(不包括类级别的变量),并且在声明的时候初始化,是使用var关键字的前提.具体什么时候使用,什么时候不使用,以下是个人浅见. 1.声明匿名函数时使用var关键字 复制代码 代码如下: var temp = new {Name="", Category=""};
-
java中transient关键字用法分析
本文实例分析了java中transient关键字用法.分享给大家供大家参考.具体分析如下: java有个特点就是序列化,简单地来说就是可以将这个类存储在物理空间(当然还是以文件的形式存在),那么当你从本地还原这个文件时,你可以将它转换为它本身.这可以极大地方便网络上的一些操作,但同时,因为涉及到安全问题,所以并不希望把类里面所有的东西都能存储(因为那样,别人可以通过序列化知道类里面的内容),那么我们就可以用上transient这个关键字,它的意思是临时的,即不会随类一起序列化到本地,所以当还原后
-
php中this关键字用法分析
本文实例讲述了php中this关键字用法.分享给大家供大家参考,具体如下: 下面定义了一个Cart类 <?php class Cart { var $items; // 购物车中的项目 // 把 $num 个 $artnr 放入车中 function add_item ($artnr, $num) { $this->items[$artnr] += $num; } // 把 $num 个 $artnr 从车中取出 function remove_item ($artnr, $num) { if
-
php中final关键字用法分析
本文实例讲述了php中final关键字用法.分享给大家供大家参考,具体如下: final关键字只能用来定义类和定义方法. 使用final关键字标记的类不能被继承 final class Person{ ....... } class Student extends Person{ ....... } 会出现错误提示.Fatal error :Class Student may not inherit from final class(Person) 使用final关键字标记的方法不能被子类覆盖
随机推荐
- 前端常见跨域解决方案(全)
- 浅谈LogMiner的使用方法
- Python多进程并发(multiprocessing)用法实例详解
- python数据清洗系列之字符串处理详解
- Android自定义View实现随手势滑动控件
- jQuery中layer分页器的使用
- Add a Formatted Table to a Word Document
- ASP.NET 入门的五个步骤
- C#微信开发之获取接口调用凭据
- Java编程中实现Condition控制线程通信
- vue组件传递对象中实现单向绑定的示例
- PHP排序算法之希尔排序(Shell Sort)实例分析
- vue.js与element-ui实现菜单树形结构的解决方法
- Visual Studio 2015 配置 Opencv3.2的图文详解
- Java基础高级综合练习题扑克牌的创建
- C++ vector使用的一些注意事项
- C#用记事本编写简单WinForm窗体程序
- python实现两张图片的像素融合
- C# 数组中的 indexOf 方法及使用
- Android使用BroadcastReceiver监听网络连接状态的改变