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

Активируйте журнал Fusion fuslogvw.exe (Выполненный как Администратор от Командной строки Visual Studio) для наблюдения то, что загрузчик сборок пытается загрузить и все происходящие ошибки.

7
задан thomasrutter 16 June 2014 в 07:19
поделиться

6 ответов

Я думаю, что статика - это то, что вам нужно. Вы можете обновить статическую переменную, вам просто нужно сделать это в «статическом контексте» (например, используя оператор ::.

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

4
ответ дан 6 December 2019 в 23:11
поделиться

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

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
1
ответ дан 6 December 2019 в 23:11
поделиться

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

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

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

6
ответ дан 6 December 2019 в 23:11
поделиться

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

- Constants.php-- $ DATABASE_NAME = "mysql"

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

0
ответ дан 6 December 2019 в 23:11
поделиться

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

И ничто не препятствует появлению статического статического свойства "обновлено" в PHP: оно инициализируется при первой установке, сохраняет значение во время выполнения сценария PHP, но вы определенно можете установить для него новое значение.

0
ответ дан 6 December 2019 в 23:11
поделиться

Я не понимаю, почему статическая переменная не работает для того, что вы описали (но это не имеет ничего общего с ключевым словом 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

?>
0
ответ дан 6 December 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: