萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php static 變量的例子

php static 變量的例子

變量范圍的另一個重要特性是靜態變量(static variable)。靜態變量僅在局部函數域中存在,但當程序執行離開此作用域時,其值並不丟失。看看下面的例子:

class test
{
public static function a(){}
public function b(){}
}
$obj = new test;

調用 代碼

test::a();
$obj->a();
$obj->b();

 

例子 演示需要靜態變量的例子
<?php教程

class myobject {
 public static $mystaticvar = 0;

 function mymethod() {
  // ::為作用域限定操作符
  // 用的self作用域而不是$this作用域
  // 因為$this只表示類的當前實例,而self::表達的是類的本身
  self::$mystaticvar += 2;
  echo self::$mystaticvar . "<br />";
 }
}

$instance1 = new myobject();
$instance1->mymethod();  // 顯示 2

$instance2 = new myobject();
$instance2->mymethod();  // 顯示 4

?>

 

<?php

class myobject {
 public static $myvar = 10;
}

echo myobject::$myvar;

// 結果: 10
?>


本函數沒什麼用處,因為每次調用時都會將 $w3sky 的值設為 0 並輸出 "0"。將變量加一的 $w3sky++ 沒有作用,因為一旦退出本函數則變量 $w3sky 就不存在了。要寫一個不會丟失本次計數值的計數函數,要將變量 $w3sky 定義為靜態的:


例子 使用靜態變量的例子

<?php
   function test()
   {
   static $w3sky = 0;
   echo $w3sky;
   $w3sky++;
   }
   ?>
現在,每次調用 test() 函數都會輸出 $w3sky 的值並加一。

看個實例


<?php
class foo
{
public static $my_static = 'foo';
public function staticvalue() {
return self::$my_static;
}
}
class bar extends foo
{
public function foostatic() {
return parent::$my_static;
}
}
print foo::$my_static . "n";
$foo = new foo();
print $foo->staticvalue() . "n";
print $foo->my_static . "n"; // undefined "property" my_static
print $foo::$my_static . "n";
$classname = 'foo';
print $classname::$my_static . "n"; // php 5.3.0之後可以動態調用
print bar::$my_static . "n";
$bar = new bar();
print $bar->foostatic() . "n";
?>
更多詳細內容請查看:http://www.111cn.net/phper/php-cy/33303.htm

copyright © 萬盛學電腦網 all rights reserved