PHP中的静态属性、静态方法、常量属性

一、静态属性、静态方法编程

在面向对象编程中,咱们不只能够经过对象访问方法和属性,还能够经过类来访问它们。这样的方法和属性就是“静态的”(static),必须用static关键字来声明。函数

class staticExample {  this

     staticpublic $num = 0;  对象

       staticpublic function sayNum() {  作用域

              echoself::num;  io

        }  面向对象编程

}  function

静态方法是以类做为做用域的函数。静态方法不能访问这个类中的普通属性,由于那些属性属于一个对象,但能够访问静态属性。若是修改了一个静态属性,那么这个类的全部实例都能访问到这个新值。class

       由于经过类现而不是实例来访问静态元素,因此访问静态元素时不须要引用对象的变量,而是使用 :: (两个冒号)来链接类名和属性或类名和方法。变量

 

echostaticExample::$num;  

staticExample::sayNum();  

要从当前类(不是子类)中访问静态方法或属性,可使用self关键字。self指向当前类,就像伪变量$this指向当前对象同样。所以,在staticExample类的外部可使用类名来访问属性$num:

staticExample::$num  

而在staticExample类内部,可使用self关键字

       使用缘由:

       一、它们在代码中的任何地方均可用(假设你能够访问该类),也就是说,你不须要在对象间传递类的实例,也不须要将实例存放在全局变量中,就能够访问类中的方法

       二、类的每一个实例均可以访问类中定义的静态属性,因此能够利用静态属性来设置值,该值能够被类的全部对象使用

       三、不须要实例化对象,就能访问静态属性或方法,这样咱们就不用为了获取一个简单的功能而实例化对象

 

二、常量属性

       有些属性是不能改变的

       在PHP 5能够在类中定义常量属性,和全局变量同样,类常量一旦设置后就不能改变。常量属性用const关键字来声明。常量不像常规属性那样以 $ 开头。按照惯例,只能用大写字母来命名常量,以下所示:

class shopProduct {  

     constAVAILABLE = 0;  

       //…  

}  

       常量属性只包含基本数据类型的值。不能将一个对象指派给常量。像静态属性同样,只能经过类而不能经过类的实例访问常量属性。引用常量时不须要用 $ 做为前导符,以下所示:

  1. echoshopProduct::AVAILABLE;  

       给已经声明过的常量赋值会引发解析错误。

       当须要在类的全部实例中都能访问某个属性,而且属性值无需改变时,应该使用常量。

相关文章
相关标签/搜索