Existe uma maneira de definir uma variável de classe para aplicar a todas as instâncias dessa classe no PHP?

StackOverflow https://stackoverflow.com/questions/2379832

  •  24-09-2019
  •  | 
  •  

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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top