首页 > php面向对象 > php static 变量的例子

php static 变量的例子

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

<?php
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.phprm.com/mxdx/fs3151.html

转载随意^^请带上本文地址!

标签:php 变量 例子 static

相关文章

发表留言