est-il possible de définir une variable de classe à appliquer à toutes les instances de cette classe en php?
Question
Je demande probablement la question mal, donc je vais donner un exemple. J'ai une classe qui est quelque chose de semblable à ceci:
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 );
}
Mon problème est lorsque vous utilisez cet objet, le modèle doit toujours être le même, et le dossier est ce qui change pour chaque instance de l'objet. Est-il possible d'avoir la valeur de modèle $ report à chaque nouvelle instance? Quelque chose comme
$a = new myclass(1,500);
$b = new myClass(2);
Si b a la valeur $this->template
qui a déjà été généré lors de la création d'un $. Peut-être que je me approche cela du mauvais angle tout à fait. Toutes les suggestions ont apprécié.
La solution
Oui. déclarant statique rendre une propriété 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;
Remarque: je $ a et $ b pour accéder à la propriété statique pour illustrer le point que la propriété s'applique aux deux instances simultaenously. De plus, cela lui permet de travailler à partir de 5.3 uniquement. Avant cela, vous auriez à faire contre :: total $.