我想知道PHP在类中的变量类型是否与其他语言中的静态函数类似。我的意思是,同一个类的所有对象都使用相同的变量,当它更新时,每个对象都会更新。静态是接近的,因为它在所有对象中共享,但我需要能够更新它。我是否必须使用全局变量?
答案 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脚本期间保持它的值,但你肯定能够将其设置为新值。