¿hay una manera de establecer una variable de clase para aplicar a todas las instancias de esa clase en php?
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.
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.