¿hay una manera de establecer una variable de clase para aplicar a todas las instancias de esa clase en php?

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

  •  24-09-2019
  •  | 
  •  

Pregunta

Probablemente estoy haciendo la pregunta mal, así que voy a dar un ejemplo. Tengo una clase que es algo similar a esto:

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 );
}

Mi problema es cuando se utiliza este objeto, la plantilla debe ser siempre el mismo, y el registro es lo que cambia para cada instancia del objeto. ¿Hay una manera de tener el valor de $ llevar a la plantilla sobre cada nueva instancia? Algo así como

$a = new myclass(1,500);
$b = new myClass(2);

Cuando b tiene el valor para $this->template que ya se generó cuando la creación de un $. Tal vez me estoy acercando esto desde el ángulo equivocado por completo. Cualquier sugerencia apreciados.

¿Fue útil?

Solución

Sí. Declarar que estática hará que sea una propiedad de clase

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: He utilizado $ ay $ b para acceder a la propiedad estática para ilustrar el punto de que la propiedad se aplica a ambas instancias simultaenously. También, si lo hace trabajar desde 5.3 en solamente. Antes de esto, se tendría que hacer Contador :: $ total.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top