var
In PHP wird das Schlüsselwort "var" zur Deklaration von Klasseneigenschaften verwendet. Es stammt aus früheren PHP-Versionen und wurde durch "public" ersetzt.
Das PHP-Schlüsselwort var
var ist ein veraltetes Schlüsselwort zur Deklaration einer Klasseneigenschaft in PHP. Es stammt aus PHP 4, als Klassen keine Zugriffsmodifikatoren besaßen und jede Eigenschaft faktisch öffentlich war. Modernes PHP behält var nur aus Gründen der Abwärtskompatibilität – seit PHP 5 ist es ein exaktes Synonym für public.
Diese Seite erläutert, was var bewirkt, wie es sich im Vergleich zu den Modifikatoren public / private / protected verhält, die es abgelöst haben, und warum es in neuem Code vermieden werden sollte.
var entspricht public
Die wichtigste Tatsache: Eine mit var deklarierte Eigenschaft verhält sich identisch zu einer mit public deklarierten. Beide sind von überall aus les- und schreibbar – innerhalb der Klasse, in Unterklassen und von außen.
<?php
class User {
var $name = "Guest"; // legacy syntax
}
class Account {
public $name = "Guest"; // modern equivalent — exactly the same behavior
}
$a = new User();
$b = new Account();
echo $a->name . "\n"; // Guest
echo $b->name . "\n"; // Guest
$a->name = "Alice"; // both properties are publicly writable
$b->name = "Bob";
echo $a->name . "\n"; // Alice
echo $b->name . "\n"; // BobDa sie gleichwertig sind, ist das Mischen von var und public in derselben Klasse zwar erlaubt, aber verwirrend – verwenden Sie public und bleiben Sie konsistent.
Syntax
Eine var-Eigenschaft kann mit oder ohne Standardwert deklariert werden, und mehrere können in einer Zeile aufgeführt werden:
<?php
class Config {
var $host; // no default → null
var $port = 8080; // with a default value
var $debug = false, $cache = true; // multiple at once
}
$c = new Config();
var_dump($c->host); // NULL
echo $c->port . "\n"; // 8080
var_dump($c->debug); // bool(false)Ein Standardwert muss ein konstanter Ausdruck sein (ein Literal, eine Konstante oder ein Array davon) – er darf nicht das Ergebnis eines Funktionsaufrufs oder eines anderen Objekts sein.
Warum var ersetzt wurde
PHP 5 führte echte Sichtbarkeit mit drei Zugriffsmodifikatoren ein, und var konnte den Unterschied zwischen ihnen schlicht nicht ausdrücken:
| Modifikator | Zugreifbar von |
|---|---|
public | überall (wie var) |
protected | der Klasse selbst und ihren Unterklassen |
private | nur der deklarierenden Klasse |
<?php
class BankAccount {
public $owner; // readable everywhere
protected $type; // class + subclasses
private $balance = 0; // this class only
public function deposit(int $amount): void {
$this->balance += $amount; // allowed: same class
}
public function getBalance(): int {
return $this->balance;
}
}
$acc = new BankAccount();
$acc->owner = "Alice"; // OK — public
$acc->deposit(100);
echo $acc->getBalance(); // 100
// echo $acc->balance; // Fatal error: Cannot access private propertyDurch die Kapselung von $balance als private werden alle Änderungen über deposit() erzwungen, sodass die Klasse ihren eigenen Zustand kontrolliert. Genau diese Garantie kann var nicht bieten, weshalb explizite Modifikatoren zum Standard wurden.
Fallstricke
- Es ist nicht das
varaus JavaScript. Das PHP-vardeklariert ausschließlich eine Klasseneigenschaft. Lokale Variablen innerhalb von Funktionen werden mit$x = 1;ohne Schlüsselwort geschrieben. - Nicht mit einem Modifikator kombinieren.
var public $x;ist ein Syntaxfehler –varist der Modifikator. - Typisierte Eigenschaften verwenden es nicht. Seit PHP 7.4 schreibt man
public int $port;. Es gibt keinvar int $port;.
Best Practices
Vermeiden Sie var in neuem Code. Deklarieren Sie die Sichtbarkeit immer explizit, damit der Leser die beabsichtigte Zugriffsebene auf einen Blick erkennt:
- Standardmäßig die restriktivste Sichtbarkeit verwenden, die noch funktioniert – in der Regel
private, mit Datenzugang über Methoden. protectedverwenden, wenn Unterklassen legitimen Zugriff benötigen.publicfür die Teile reservieren, die wirklich zur externen Schnittstelle des Objekts gehören.
Verwandte Themen
- PHP-Zugriffsmodifikatoren –
public,privateundprotectedim Detail. - Die Schlüsselwörter PHP
publicund PHPprivate. - PHP-Klassen und -Objekte und das Schlüsselwort
class. - PHP-Konstruktor – Eigenschaften beim Erstellen eines Objekts initialisieren.
Fazit
var ist ein Überbleibsel aus PHP 4, das heute nichts anderes bedeutet als public. Es funktioniert noch, verbirgt aber die Absicht. In modernem PHP sollte jede Eigenschaft mit public, protected oder private deklariert werden, damit die Zugriffsregeln des Codes explizit und selbstdokumentierend sind.