PHP中的静态属性、静态方法、常量属性
2016-09-26 00:00
441 查看
1、静态属性、静态方法
在面向对象编程中,我们不仅可以通过对象访问方法和属性,还可以通过类来访问它们。这样的方法和属性就是“静态的”(static),必须用static关键字来声明。
class staticExample {
staticpublic $num = 0;
staticpublic function sayNum() {
echoself::num;
}
}
静态方法是以类作为作用域的函数。静态方法不能访问这个类中的普通属性,因为那些属性属于一个对象,但可以访问静态属性。如果修改了一个静态属性,那么这个类的所有实例都能访问到这个新值。
因为通过类现而不是实例来访问静态元素,所以访问静态元素时不需要引用对象的变量,而是使用 :: (两个冒号)来连接类名和属性或类名和方法。
echostaticExample::$num;
staticExample::sayNum();
要从当前类(不是子类)中访问静态方法或属性,可以使用self关键字。self指向当前类,就像伪变量$this指向当前对象一样。因此,在staticExample类的外部可以使用类名来访问属性$num:
staticExample::$num
而在staticExample类内部,可以使用self关键字
使用原因:
1、它们在代码中的任何地方都可用(假设你可以访问该类),也就是说,你不需要在对象间传递类的实例,也不需要将实例存放在全局变量中,就可以访问类中的方法
2、类的每个实例都可以访问类中定义的静态属性,所以可以利用静态属性来设置值,该值可以被类的所有对象使用
3、不需要实例化对象,就能访问静态属性或方法,这样我们就不用为了获取一个简单的功能而实例化对象
2、常量属性
有些属性是不能改变的
在PHP 5可以在类中定义常量属性,和全局变量一样,类常量一旦设置后就不能改变。常量属性用const关键字来声明。常量不像常规属性那样以 $ 开头。按照惯例,只能用大写字母来命名常量,如下所示:
class shopProduct {
constAVAILABLE = 0;
//…
}
常量属性只包含基本数据类型的值。不能将一个对象指派给常量。像静态属性一样,只能通过类而不能通过类的实例访问常量属性。引用常量时不需要用 $ 作为前导符,如下所示:
echoshopProduct::AVAILABLE;
给已经声明过的常量赋值会引起解析错误。
当需要在类的所有实例中都能访问某个属性,并且属性值无需改变时,应该使用常量。
在面向对象编程中,我们不仅可以通过对象访问方法和属性,还可以通过类来访问它们。这样的方法和属性就是“静态的”(static),必须用static关键字来声明。
class staticExample {
staticpublic $num = 0;
staticpublic function sayNum() {
echoself::num;
}
}
静态方法是以类作为作用域的函数。静态方法不能访问这个类中的普通属性,因为那些属性属于一个对象,但可以访问静态属性。如果修改了一个静态属性,那么这个类的所有实例都能访问到这个新值。
因为通过类现而不是实例来访问静态元素,所以访问静态元素时不需要引用对象的变量,而是使用 :: (两个冒号)来连接类名和属性或类名和方法。
echostaticExample::$num;
staticExample::sayNum();
要从当前类(不是子类)中访问静态方法或属性,可以使用self关键字。self指向当前类,就像伪变量$this指向当前对象一样。因此,在staticExample类的外部可以使用类名来访问属性$num:
staticExample::$num
而在staticExample类内部,可以使用self关键字
使用原因:
1、它们在代码中的任何地方都可用(假设你可以访问该类),也就是说,你不需要在对象间传递类的实例,也不需要将实例存放在全局变量中,就可以访问类中的方法
2、类的每个实例都可以访问类中定义的静态属性,所以可以利用静态属性来设置值,该值可以被类的所有对象使用
3、不需要实例化对象,就能访问静态属性或方法,这样我们就不用为了获取一个简单的功能而实例化对象
2、常量属性
有些属性是不能改变的
在PHP 5可以在类中定义常量属性,和全局变量一样,类常量一旦设置后就不能改变。常量属性用const关键字来声明。常量不像常规属性那样以 $ 开头。按照惯例,只能用大写字母来命名常量,如下所示:
class shopProduct {
constAVAILABLE = 0;
//…
}
常量属性只包含基本数据类型的值。不能将一个对象指派给常量。像静态属性一样,只能通过类而不能通过类的实例访问常量属性。引用常量时不需要用 $ 作为前导符,如下所示:
echoshopProduct::AVAILABLE;
给已经声明过的常量赋值会引起解析错误。
当需要在类的所有实例中都能访问某个属性,并且属性值无需改变时,应该使用常量。
相关文章推荐
- php中常量 const属性,静态属性,静态的函数方法
- PHP中的静态属性、静态方法、常量属性
- php中常量 const属性,静态属性,静态的函数方法
- 如何使用PHP静态方法与属性
- PHP static之静态变量和属性方法
- php面向对象中static静态属性和静态方法的调用
- php面向对象中static静态属性和静态方法的调用
- php之static静态属性与静态方法实例分析
- PHP 面向对象之静态属性和静态方法
- PHP获取类中常量,属性,及方法列表的方法
- PHP中两个冒号表示属于类的静态方法或属性
- php面向对象中static静态属性和静态方法的调用
- php面向对象中static静态属性和静态方法的调用
- PHP 类的静态成员属性与静态方法 static 关键字
- php之静态属性与静态方法
- PHP获得类常量,属性,方法列表
- PHP里边用Static关键字来定义静态属性和方法
- php静态属性和静态方法
- PHP获取类对象方法、属性、常量列表!
- php中的静态属性和静态方法