当前位置:首页 > PHP教程 > php面向对象 > 列表

php static 变量的例子

发布:smiling 来源: PHP粉丝网  添加日期:2014-06-04 09:55:17 浏览: 评论:0 

变量范围的另一个重要特性是静态变量(static variable),静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失,看看下面的例子:

  1. class test  
  2. {  
  3. public static function a(){}  
  4. public function b(){}  
  5. }  
  6. $obj = new test; 
  7. //调用 代码如下: 
  8. test::a();  
  9. $obj->a();  
  10. $obj->b(); 

例子,演示需要静态变量的例子:

  1. <?php 
  2. class myobject { 
  3.  public static $mystaticvar = 0; 
  4.  function mymethod() { 
  5.   // ::为作用域限定操作符 
  6.   // 用的self作用域而不是$this作用域 
  7.   // 因为$this只表示类的当前实例,而self::表达的是类的本身 
  8.   self::$mystaticvar += 2; 
  9.   echo self::$mystaticvar . "<br />"
  10.  } 
  11. $instance1 = new myobject(); 
  12. $instance1->mymethod();  // 显示 2 
  13. $instance2 = new myobject(); 
  14. $instance2->mymethod();  // 显示 4 
  15. ?> 
  16. <?php 
  17. class myobject { 
  18.  public static $myvar = 10; 
  19. echo myobject::$myvar
  20. // 结果: 10 
  21. ?> 

本函数没什么用处,因为每次调用时都会将 $w3sky 的值设为 0 并输出 "0",将变量加一的 $w3sky++ 没有作用,因为一旦退出本函数则变量 $w3sky 就不存在了,要写一个不会丢失本次计数值的计数函数,要将变量 $w3sky 定义为静态的:

例子,使用静态变量的例子:

  1. <?php 
  2.    function test() 
  3.    { 
  4.    static $w3sky = 0; 
  5.    echo $w3sky
  6.    $w3sky++; 
  7.    } 
  8. ?> 

现在,每次调用 test() 函数都会输出 $w3sky 的值并加一.看个实例:

  1. <?php  
  2. class foo  
  3. {  
  4. public static $my_static = 'foo';  
  5. public function staticvalue() {  
  6. return self::$my_static;  
  7. }  
  8. }  
  9. class bar extends foo  
  10. {  
  11. public function foostatic() {  
  12. return parent::$my_static;  
  13. }  
  14. }  
  15. print foo::$my_static . "n";  
  16. $foo = new foo();  
  17. print $foo->staticvalue() . "n";  
  18. print $foo->my_static . "n"// undefined "property" my_static  
  19. print $foo::$my_static . "n";  
  20. $classname = 'foo';  
  21. print $classname::$my_static . "n"// php 5.3.0之后可以动态调用  
  22. print bar::$my_static . "n";  
  23. $bar = new bar();  
  24. print $bar->foostatic() . "n";  
  25. ?> 

Tags: php static 变量 例子

分享到: