est-il possible de définir une variable de classe à appliquer à toutes les instances de cette classe en php?

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

  •  24-09-2019
  •  | 
  •  

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é.

Était-ce utile?

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 $.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top