Что такое эквивалент PHP статической переменной на других языках?

Мне интересно, имеет ли PHP тип переменной в классах, которые работают как статические на других языках. И я имею в виду, что все объекты одного и того же класса используют одну и ту же переменную, и когда она обновляется на одном, она обновляется на каждом из них. Static близок, потому что он доступен для всех объектов, но мне нужно его обновить. Должен ли я использовать глобалы для этого?

Solutions Collecting From Web of "Что такое эквивалент PHP статической переменной на других языках?"

Я думаю, что статическое – это то, что вы хотите. Вы можете обновить статическую переменную, вам просто нужно сделать это в «статическом контексте» (т. Е. С помощью оператора ::.

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

Правильный ответ заключается в том, что в PHP нет эквивалента в финале, но статичность в любом случае похожа на то, что вы хотели.

static имеет свойство, что оно будет иметь одинаковое значение во всех экземплярах класса, потому что оно не привязано к конкретному экземпляру.

Вам нужно будет использовать оператор :: для доступа к нему, поскольку, будучи статичным, вы не можете использовать -> .

Вы можете обновить статические свойства:

 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 

Вы можете просто создавать переменные в файле PHP, например, Constants.

–Constants.php– $ DATABASE_NAME = "mysql"

и включить файл в ваш файл. Вы можете изменить его значение. Он приближается к тому, что вы хотите, но не стоит называть их константами, потому что константы не предназначены для изменения, вот что меня смутило :).

Я думаю, что static это ключевое слово, которое вы ищете.

И нет ничего, что предотвращало бы static свойство beeing «обновляется» в PHP: оно инициализируется при первом запуске, оно сохраняет значение во время выполнения PHP-скрипта, но вы определенно можете установить его на новое значение.

Я не понимаю, почему создание переменной 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 ?>