Was macht das PHP-Schlüsselwort 'var'?


427

Dies ist wahrscheinlich eine sehr triviale Frage, aber ich konnte die Antwort weder über Websuchmaschinen noch auf php.net finden. Bitte leiten Sie mich einfach dorthin, wo ich darüber lesen kann, wenn Sie keine Zeit haben, dies zu erklären.

  1. Was bedeutet das Schlüsselwort 'var' in PHP?
  2. Gibt es Unterschiede zwischen PHP4 und PHP5?

4
Ich denke, als Sie diese Frage am 30. Juli 2009 gestellt haben, wurde sie noch nicht unter php.net/manual/en/language.oop5.visibility.php veröffentlicht ?: "Hinweis: Die PHP 4-Methode zum Deklarieren einer Variablen mit dem Das Schlüsselwort var wird aus Kompatibilitätsgründen weiterhin unterstützt (als Synonym für das öffentliche Schlüsselwort). In PHP 5 vor 5.1.3 würde seine Verwendung eine E_STRICT-Warnung generieren. " Oder vielleicht hast du es nicht gefunden. Aber die Antwort ist klar auf php.net angegeben.
Jaime Montoya

Es ist wirklich erstaunlich zu sehen, welche Reisen PHP in diesen Jahren hinter sich hat!
Mehrdad Shokri

Antworten:


384

Es dient zum Deklarieren von Klassenmitgliedsvariablen in PHP4 und wird nicht mehr benötigt. Es funktioniert in PHP5, E_STRICTlöst jedoch in PHP eine Warnung von Version 5.0.0 bis Version 5.1.2 aus, sobald es veraltet war. Seit PHP 5.3 ist var nicht mehr veraltet und ein Synonym für 'public'.

Anwendungsbeispiel:

class foo {
    var $x = 'y'; // or you can use public like...
    public $x = 'y'; //this is also a class member variables.
    function bar() {
    }
}

10
"Hinweis: Die PHP 4-Methode zum Deklarieren einer Variablen mit dem varSchlüsselwort wird aus Kompatibilitätsgründen weiterhin unterstützt (als Synonym für das publicSchlüsselwort). In PHP 5 vor 5.1.3 würde ihre Verwendung eine E_STRICTWarnung generieren ." php.net/manual/en/language.oop5.visibility.php BEARBEITEN : Ich habe gerade gesehen, dass dies bereits in einer anderen Antwort zitiert wurde . Aber Sie sollten Ihre entsprechend bearbeiten.
Sk8erPeter

Dies bedeutet , dass es ist notwendig , die verwenden publicSchlüsselwort für eine Membervariable. Ist das wahr? Kann man nicht einfach sagen $x;?
Limeandcoconut

1
Wird es also empfohlen, einfach bei public / private zu bleiben und var vollständig zu ignorieren, da wir uns keine Sorgen über die Arbeit mit veralteten Versionen von PHP machen?
NoodleOfDeath

1
Ab 2019: php-fig.org/psr/psr-12/#43-properties-and-constants gibt an, dass diese varnicht verwendet werden dürfen, und die Sichtbarkeit muss für alle Eigenschaften deklariert werden.
Charles Wood

79

Das varSchlüsselwort wird verwendet , um Variablen in einer Klasse in PHP 4 zu deklarieren :

class Foo {
    var $bar;
}

Mit PHP 5 wurde die Sichtbarkeit von Eigenschaften und Methoden ( public, protectedund private) eingeführt und varist daher veraltet.


17
In PHP 5.3 varist veraltet :)
Ionuț G. Stan

8
Wenn es veraltet ist, was ist jetzt die beste Vorgehensweise in 5.3 - es zu verwenden oder nicht zu verwenden? Kannst du es gerne benutzen private var $foo = 'bar';?
Tom Auger

1
Weiß jemand, warum es veraltet war?
Simon East

19
Es war in 5.1.3 nicht veraltet - die einzigen angegebenen Gründe sind "aus Kompatibilitätsgründen" . Ich denke , am besten Praxis ist es nur , wenn Sie mit PHP 4 kompatibel sein müssen sicher nicht tun private var- , dass die Dinge ganz schnell brechen, als varnur ein Synonym für ist publicin PHP 5
cincodenada

2
varist kein echtes Synonym für, publicda es nicht zum Deklarieren statischer Elemente oder Konstanten verwendet werden kann.
Colin O'Dell

27

Ich zitiere aus http://www.php.net/manual/en/language.oop5.visibility.php

Hinweis: Die PHP 4-Methode zum Deklarieren einer Variablen mit dem Schlüsselwort var wird aus Kompatibilitätsgründen weiterhin unterstützt (als Synonym für das öffentliche Schlüsselwort). In PHP 5 vor 5.1.3 würde seine Verwendung eine E_STRICTWarnung erzeugen .


Ich habe Tests gemacht. Kein zurückgegebenes E_STRICT! sandbox.onlinephpfunctions.com/code/…
Wallace Maxters

1
@WallacedeSouza, das liegt daran, dass Sie in Ihrem Beispiel PHP 7 verwendet haben. Es war nur in den Versionen 5.0 - 5.1.3
RedClover

8

Antwort: Ab PHP 5.3 und entspricht >das varSchlüsselwort dem publicDeklarieren von Variablen innerhalb einer Klasse.

class myClass {
  var $x;
}

ist das gleiche wie (für PHP 5.3 und >):

class myClass {
  public $x;
}

Verlauf: Früher war dies die Norm für die Deklaration von Variablen in Klassen, wurde jedoch später abgeschrieben, später (PHP 5.3) jedoch nicht mehr abgeschrieben.


5

Im Grunde ist es also ein alter Stil und wird nicht für neuere Versionen von PHP verwendet. Verwenden Sie stattdessen lieber das öffentliche Schlüsselwort, wenn Sie das Schlüsselwort var nicht lieben. Also anstatt zu benutzen

class Test {
    var $name;
}

Verwenden

class Test {
   public $name;
}

warum sagst du das? varGibt es Nachrichten über Veraltetheit, die ich nicht gehört habe? die beiden sollten synonym sein
NappingRabbit

Aus dem PHP-Handbuch: "Die PHP 4-Methode zum Deklarieren einer Variablen mit dem Schlüsselwort var wird aus Kompatibilitätsgründen weiterhin unterstützt (als Synonym für das öffentliche Schlüsselwort)." php.net/manual/en/language.oop5.visibility.php
Tomark


1

var wird wie public verwendet .wenn eine Variable in einer Klasse var $ a wie folgt deklariert wird; if bedeutet, dass sein Geltungsbereich für die Klasse öffentlich ist. in einfachen Worten var ~ public

var $a;
public

0

hier und jetzt in der 2018Verwendung varfür Variablendeklaration ist gleichbedeutend mit publicwie in

class Sample{
    var $usingVar;
    public $usingPublic;

    function .....

}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.