澳门新葡萄京娱乐场PHP 5.0对象模型深度探索之类的静态成员

类的静态成员与平日的类成员差别: 静态成员与目标的实例非亲非故,只与类本身有关.
他们用来促成类要卷入的作用和数量,但不包罗特定目标的功力和数据.
静态成员包含静态方法和静态属性.静态属性包括在类中要卷入的数量,能够由全数类的实例分享.
实际上,除了归于叁个定位的类并节制访问情势外,类的静态属性特别周围于函数的全局变量大家在下例中运用了三个静态属性Counter::$count.
它归于Counter类,而不归于别的Counter的实例.你不能够用this来引用它,但足以用self或别的有效的命名表达.
在例子中,getCount方法再次来到self::$count,并不是Counter::$count.静态方准绳得以达成类须要封装的功效,与特定的对象毫无干系.
静态方法特别贴近于大局函数.
静态方法能够完全访谈类的本性,也足以由对象的实例来访谈,不论访谈的约束语是还是不是是什么.在6.3例中,getCount是三个不足为道的议程,用-来调用.
PHP创建三个this变量,即使办法没有选用到.不过,getCount不归属此外对象.在稍稍情状下,我们竟然愿意在不设有有效的目的时调用它,那么就活该运用静态方法.
PHP将不在静态方法内部建设布局this变量,纵然你从三个指标中调用它们.例子6.7由6.3改成getCount为静态方法而来.
Static关键字不能够拦截一个实例用-运算符来调用getCount,但PHP将不在方法内部创设this变量.如若你利用this-来调用,将会出错.//6.3例指第3节–布局函数和析构函数中的例子(参看前文卡塔尔,通过五个例证的可比,你能够很好通晓//static方法与常常方法之间的区别.你可以写一个格局通过决断this是还是不是创建来突显是还是不是它被静态地依旧非静态地调用.
当然,若是您用了static
关键字,不管它怎样被调用,那一个艺术总是静态的.你的类也能够定义常量属性,不需求动用public
static,只必要用const关键字就能够.
常量属性总是静态的.它们是类的品质,而不是实例化该类的对象的属性.Listing
6.7 Static members?php class Counter { private static $count = 0; const
VE宝马7系SION = 2.0; function __construct() { self::$count++; } function
__destruct(卡塔尔国 { self::$count–; } static function getCount(State of Qatar { return
self::$count; } }; //创设三个实例,则__construct(卡塔尔(قطر‎将施行 $c = new
Counter(卡塔尔(قطر‎; //输出 1 print(Counter::getCount(卡塔尔 . “brn”卡塔尔国;
//输出类的版本属性 print(“Version used: ” . Counter::VECR-VSION . “brn”卡塔尔(قطر‎; ?

/*
+——————————————————————————-+
| = 本文为Haohappy读<> 
| = 中Classes and Objects一章的笔记 
| = 翻译为主+个人心得 
| = 为幸免可能发生的不必要的劳碌请勿转载,多谢 
| = 迎接商量指正,希望和全体PHP爱好者合营提高! 
| = PHP5钻探中央: 
+——————————————————————————-+
*澳门新葡萄京娱乐场 ,/

第七节–类的静态成员

  静态属性包含在类中要卷入的数目,能够由全体类的实例共享。实际上,除了归属多个恒久的类并限制访谈形式外,类的静态属性特别周围于函数的全局变量。

类的静态成员与平日的类成员不相同: 静态成员与对象的实例非亲非故,只与类自己有关. 他们用来落到实处类要卷入的效果和数据,但不包含特定对象的功能和数据. 静态成员包含静态方法和静态属性.

  大家在下例中利用了八个静态属性Counter::$count。它归属Counter类,而不归于此外Counter的实例。你不能用this来援引它,但能够用self或别的有效的命名表明。在例子中,getCount方法重返self::$count,并不是Counter::$count。

静态属性包括在类中要卷入的多少,能够由全体类的实例分享. 实际上,除了属于叁个定点的类并约束访谈情势外,类的静态属性特别临近于函数的全局变量

  静态方准则贯彻类须要封装的成效,与一定的靶子非亲非故. 静态方法特别雷同于大局函数. 静态方法能够完全访谈类的属性,也能够由对象的实例来访谈,无论访问的限制语是不是是什么.

我们在下例中动用了三个静态属性Counter::$count. 它归属Counter类,而不归于其余Counter的实例.你无法用this来引用它,但能够用self或其余有效的命名表明. 在例子中,getCount方法再次回到self::$count,并非Counter::$count.

  在前文的例证中,getCount是贰个常备的法门,用->来调用. PHP创设一个this变量,固然办法未有选拔到.可是,getCount不属于此外对象.在稍稍景况下,大家竟然希望在不设有有效的指标时调用它,那么就应当运用静态方法. PHP将不在静态方法内部建设构造this变量,即便你从八个指标中调用它们.

静态方法规贯彻类须要封装的功能,与一定的目的毫无干系. 静态方法特别左近于大局函数. 静态方法可以完全访谈类的性质,也足以由对象的实例来访问,无论访谈的约束语是还是不是是什么.

  例子6.7由6.3更动getCount为静态方法而来. Static关键字无法拦截四个实例用->运算符来调用getCount,但PHP将不在方法内部创立this变量.假诺你选取this->来调用,将会出错.

在6.3例中,getCount是一个平日的办法,用->来调用. PHP创立三个this变量,纵然办法没有使用到.可是,getCount不归属其余对象.在有一点情状下,大家居然希望在官样文章有效的对象时调用它,那么就应该接纳静态方法. PHP将不在静态方法内部组建this变量,即便你从一个目的中调用它们.

//6.3例指第4节–布局函数和析构函数中的例子(参看前文卡塔尔,通过四个例证的可比,你能够很好了然
//static方法与日常方法之间的不同.

事例6.7由6.3转移getCount为静态方法而来. Static关键字不能够阻止叁个实例用->运算符来调用getCount,但PHP将不在方法内部创建this变量.如若你利用this->来调用,将会出错.

  你能够写二个方法通过判别this是还是不是创立来体现是还是不是它被静态地依旧非静态地调用. 当然,假使您用了static 关键字,不管它怎么被调用,那么些艺术总是静态的.

//6.3例指第1节–布局函数和析构函数中的例子(参看前文卡塔尔国,通过八个例证的可比,你能够很好精晓
//static方法与普通方法之间的差异.

  你的类也得以定义常量属性,不要求选拔public static,只需求用const关键字就能够. 常量属性总是静态的.它们是类的特性,并不是实例化该类的目的的属性.

你可以写二个方法通过推断this是不是成立来呈现是不是它被静态地照旧非静态地调用. 当然,如若你用了static 关键字,不管它怎么被调用,这一个艺术总是静态的.

Listing 6.7 Static members
复制代码 代码如下:
class Counter 

 private static $count = 0; 
 const VERSION = 2.0; 

你的类也得以定义常量属性,无需选用public static,只须要用const关键字就可以. 常量属性总是静态的.它们是类的质量,并非实例化该类的指标的属性.

 function __construct() 
 { 
  self::$count++; 
 } 

Listing 6.7 Static members

 function __destruct() 
 { 
  self::$count–; 
 } 

复制代码 代码如下:   class Counter  
   {  
       private static $count = 0;  
       const VERSION = 2.0;  

 static function getCount() 
 { 
  return self::$count; 
 } 
}; 

       function __construct()  
       {  
           self::$count++;  
       }  

//创造三个实例,则__construct()将执行 
$c = new Counter(); 

       function __destruct()  
       {  
           self::$count–;  
       }  

//输出 1 
print(Counter::getCount() . “n”); 

       static function getCount()  
       {  
           return self::$count;  
       }  
   };  

//输出类的版本属性 
print(“Version used: ” . Counter::VERSION . “n”); 
?>

   //创设叁个实例,则__construct()将执行  
   $c = new Counter();  

   //输出 1  
   print(Counter::getCount() . “
n”);  

   //输出类的本子属性  
   print(“Version used: ” . Counter::VERSION . “
n”);  
?>  

发表评论

电子邮件地址不会被公开。 必填项已用*标注