在其他语言中,PHP等价于静态变量是什么?

时间:2009-07-29 05:48:56

标签: php final

我想知道PHP在类中的变量类型是否与其他语言中的静态函数类似。我的意思是,同一个类的所有对象都使用相同的变量,当它更新时,每个对象都会更新。静态是接近的,因为它在所有对象中共享,但我需要能够更新它。我是否必须使用全局变量?

6 个答案:

答案 0 :(得分:6)

正确的答案是PHP中没有与final相同的内容,但 static 似乎就像你想要的那样。

static 具有以下属性:它在所有类的实例中具有相同的值,因为它不依赖于特定实例。

您需要使用 :: 运算符来访问它,因为它是静态的,您不能使用 - >

答案 1 :(得分:4)

我认为静电就是你想要的。您可以更新静态变量,只需在“静态上下文”中进行(即使用::运算符。

class Class1 {
    protected static $_count = 0;

    public function incrementCount() {
        return self::$_count++;
    }
}

$instance1 = new Class1();
$instance2 = new Class1();
var_dump($instance1->incrementCount(), $instance2->incrementCount());

将输出:

int 0

int 1

答案 2 :(得分:1)

可以更新静态属性:

class A {
   protected static $_foo = 0;

   public function increment()
   {
       self::$_foo++;
   }   

   public function getFoo()
   {
       return self::$_foo;
   }
}


$instanceOne = new A();
$instanceTwo = new A();


$instanceOne->getFoo(); // returns 0

$instanceTwo->increment();

$instanceOne->getFoo(); // returns 1

答案 3 :(得分:0)

您可以在PHP文件中创建名为Constants的变量。

- Constants.php-- $ DATABASE_NAME =“mysql”

并将文件包含在您的文件中。您可以更改其值。它接近你想要的东西,但是不要把它们称为常量,因为常量不是要改变的,这让我感到很困惑:)。

答案 4 :(得分:0)

我不明白为什么使变量static不能用于你描述的内容(但它与关键字final无关)?

<?php

class Bla
{
    public static $var;

    public function __construct()
    {
        Bla::$var = Bla::$var + 1;
    }
}

$test = new Bla();
echo Bla::$var; // 1
$test = new Bla();
echo Bla::$var; // 2

?>

答案 5 :(得分:0)

我认为static 是您要查找的关键字。

并没有什么可以防止static属性在PHP中被“更新”:它在第一次设置时被初始化,它在执行PHP脚本期间保持它的值,但你肯定能够将其设置为新值。