Existe uma maneira de definir uma variável de classe para aplicar a todas as instâncias dessa classe no PHP?
Pergunta
Provavelmente estou fazendo mal a pergunta, então vou dar um exemplo. Eu tenho uma classe que é algo semelhante a isso:
class myclass {
var $template = array();
var $record = array();
function __construct($template,$record) {
$this->template = ( set = to a database response here );
$this->record = ( set = to a database response here );
}
Meu problema é ao usar esse objeto, o modelo deve sempre ser o mesmo e o registro é o que muda para cada instância do objeto. Existe uma maneira de ter o valor para $ modelo de transporte para cada nova instância? Algo como
$a = new myclass(1,500);
$b = new myClass(2);
Onde B tem o valor para $this->template
Isso já foi gerado ao criar $ a. Talvez eu esteja se aproximando disso do ângulo errado. Quaisquer sugestões apreciadas.
Solução
Sim. Declarando estático fará com que seja uma propriedade de classe
class Counter {
public static $total = 0;
public function increment()
{
self::$total++;
}
}
echo Counter::$total; // 0;
$a = new Counter;
$a->increment();
echo $a::$total; // 1;
$b = new Counter;
echo $b::$total; // 1;
Nota: usei $ A e $ B para acessar a propriedade estática para ilustrar o ponto de que a propriedade se aplica a ambas as instâncias simultaneamente. Além disso, isso funcionará apenas de 5.3. Antes disso, você teria que fazer contra :: $ total.