gibt es eine Möglichkeit, eine Klassenvariable auf alle Instanzen dieser Klasse in PHP zu bewerben?
Frage
Ich frage wohl die Frage schlecht, so dass ich ein Beispiel geben werde. Ich habe eine Klasse, die etwas Ähnliches wie das ist:
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 );
}
Mein Problem ist, wenn dieses Objekt verwenden, müssen die Vorlage sollte immer das gleiche, und der Datensatz ist, was für jede Instanz des Objekts ändert. Gibt es eine Möglichkeit, den Wert für $ template Übertrag auf jede neue Instanz haben? So etwas wie
$a = new myclass(1,500);
$b = new myClass(2);
Wenn b den Wert für $this->template
hat, die bereits erzeugt wurde, als ein $ zu schaffen. Ich nähere dies aus dem falschen Winkel vielleicht ganz. Irgendwelche Vorschläge geschätzt.
Lösung
Ja. Deklarieren sie statisch es eine Klasse Eigenschaft machen
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;
Hinweis: Früher habe ich a und $ b auf Zugang $ die statische Eigenschaft, den Punkt zu veranschaulichen, dass die Eigenschaft zu beiden Fällen gilt gleichzeitig treffen. Außerdem wird von 5,3 damit arbeiten nur. Vor diesem, dann würden Sie Zähler tun :: $ total.