本文对PHP5中的static和const关键字作用进行了详细的介绍,希望对学习PHP5的朋友有一定的帮助。 1,static在php中,static 关键字在类中有于描述一个成员是静态的,static能够限制外部的访问…,
本文对PHP5中的static和const关键字作用进行了详细的介绍,希望对学习PHP5的朋友有一定的帮助。
1,static
在php中,static 关键字在类中有于描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例,其他类无法访问,只对类的实例共享。
类的静态变量,非常类似全局变量,能够被所有类的实例共享,类的静态方法也是一样的,类似于全局函数。
类的静态方法能访问类的静态的属性。
说明:static的成员,必须使用self来访问,使用this会出错 。
this和self的区别,请参考文章: php中this,self,parent的区别
2,const
const是一个定义常量的关键字,类似于C中的#define,能够定义一个常量,在程序中不允许修改。
例子:
<?php class Counter { private static $count = 0; //定义一个静态属性 const TYPE_VERSION = 2; //定义一个常量 const TYPE_ACTIVED = 1; //定义一个常量 //构造函数 function __construct() { self::$count++; } //析构函数 function __destruct() { self::$count--; } //定义一个静态的方法 static function getCount() { return self::$count; } //翻译所有的const public static function get_type_list() { //www.90codes.com return array( self::TYPE_VERSION => '版本', self::TYPE_ACTIVED => '激活', ); } public static function getTypes() { return self::getConstants('TYPE_', __CLASS__, self::get_type_list()); } public static function getConstants($token, $objectClass, $valOption = array(), $showOnlyOneLabel = false) { $tokenLen = strlen($token); $reflection = new ReflectionClass($objectClass); //php built-in $allConstants = $reflection->getConstants(); //constants as array $tokenConstants = array(); foreach ($allConstants as $name => $val) { if (substr($name, 0, $tokenLen) != $token) continue; if ($showOnlyOneLabel && 1 == count($valOption) && isset($valOption[$val])) { $tokenConstants = $valOption[$val]; break; } $tokenConstants[$val] = isset($valOption[$val]) ? $valOption[$val] : $val; } return $tokenConstants; } } print_r(Counter::getTypes()); //创建一个实例 $c = new Counter(); //执行打印 print(Counter::getCount() . "<br>n"); //使用直接输入类名来访问静态方法Counter::getCount //打印类的版本 print("Version useed: " . Counter::TYPE_ACTIVED . "<br>n"); ?>
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。