Активируйте журнал Fusion fuslogvw.exe
(Выполненный как Администратор от Командной строки Visual Studio) для наблюдения то, что загрузчик сборок пытается загрузить и все происходящие ошибки.
Я думаю, что статика - это то, что вам нужно. Вы можете обновить статическую переменную, вам просто нужно сделать это в «статическом контексте» (например, используя оператор ::.
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
Вы можете обновить статические свойства:
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 нет эквивалента final, но static в любом случае кажется тем, что вы хотели.
static имеет свойство, состоящее в том, что он будет иметь одинаковое значение для всех экземпляров класса, потому что он не привязан к конкретному экземпляру.
Вам нужно будет использовать оператор :: для доступа к нему, потому что будучи статичными, вы не можете использовать -> .
Вы можете просто создать переменные в файле PHP, скажем, с именем Константы.
- Constants.php-- $ DATABASE_NAME = "mysql"
и включите файл в свой файл. Вы можете изменить его значение. Это близко к тому, что вы хотите, но нехорошо называть их константами, потому что константы не предназначены для изменения, вот что меня смутило :).
Я думаю, что static
- это ключевое слово, которое вы ищете.
И ничто не препятствует появлению статического статического
свойства "обновлено" в PHP: оно инициализируется при первой установке, сохраняет значение во время выполнения сценария PHP, но вы определенно можете установить для него новое значение.
Я не понимаю, почему статическая переменная не работает для того, что вы описали (но это не имеет ничего общего с ключевым словом 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
?>