O que é o PHP equivalente a uma variável estática em outras línguas?
Pergunta
Eu estou querendo saber se o PHP tem um tipo de variável em classes que funciona como estático em outros idiomas.E com isso quero dizer a todos os objetos da mesma classe use a mesma variável e quando ele é atualizado em um é atualizado em cada um.Estática é perto, porque ele é compartilhado ao longo de todos os objetos, mas eu preciso ser capaz de atualizá-lo.Será que vou ter que usar globais para isso?
Solução
Eu acho que estática é o que você quer. Você pode atualizar uma variável estática, basta fazê -lo em um "contexto estático" (ou seja, usando o operador ::.
class Class1 {
protected static $_count = 0;
public function incrementCount() {
return self::$_count++;
}
}
$instance1 = new Class1();
$instance2 = new Class1();
var_dump($instance1->incrementCount(), $instance2->incrementCount());
será lançado:
int 0
int 1
Outras dicas
A resposta correta é que não há equivalente no PHP para final, mas estático Parece o que você queria em primeiro lugar.
estático tem a propriedade de que terá o mesmo valor em todas as instâncias de uma classe, porque não está vinculada a uma instância específica.
Você precisará usar o :: operador para acessá -lo, porque sendo estático, você não pode usar ->.
Você posso Atualizar propriedades estáticas:
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
Você pode simplesmente criar variáveis em um arquivo PHP dizer Constantes nomeadas.
--Constants.php-- $DATABASE_NAME = "mysql"
e incluir o arquivo em seu arquivo.Você pode alterar o seu valor.Ele aproxima-se do que você deseja, mas não é bom chamá-los de constantes devido a constantes não são destinadas a ser alterado, que é o que me confundiu :).
Eu penso static
é a palavra -chave que você está procurando.
E não há nada que impeça um static
Propriedade da Beeing "Atualizada", no PHP: é inicializada na primeira vez em que é definido, mantém o valor durante a execução do script PHP, mas você definitivamente pode defini -lo como um novo valor.
Não vejo por que fazer a variável estática não funciona para o que você descreveu (mas não tem nada a ver com a palavra -chave 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
?>