Co robi słowo kluczowe PHP „var”?


427

To prawdopodobnie bardzo trywialne pytanie, ale nie znalazłem odpowiedzi ani w wyszukiwarkach internetowych, ani na php.net. Proszę, proszę kierujcie mnie tam, gdzie mogę o tym przeczytać, jeśli nie macie czasu na wyjaśnienia.

  1. Co oznacza słowo kluczowe „var” w PHP?
  2. Czy są jakieś różnice między PHP4 i PHP5?

4
Wydaje mi się, że kiedy zadałeś to pytanie 30 lipca 2009 r., Nie zostało ono jeszcze opublikowane na stronie php.net/manual/en/language.oop5.visibility.php ?: "Uwaga: Metoda deklarowania zmiennej w PHP 4 Słowo kluczowe var jest nadal obsługiwane ze względu na kompatybilność (jako synonim publicznego słowa kluczowego). W PHP 5 przed 5.1.3 jego użycie wygenerowałoby ostrzeżenie E_STRICT. ” A może go nie znalazłeś. Ale odpowiedź jest wyraźnie podana na php.net.
Jaime Montoya

To naprawdę niesamowite zobaczyć, jakie podróże PHP przeszedł przez te lata!
Mehrdad Shokri

Odpowiedzi:


384

Służy do deklarowania zmiennych członków klasy w PHP4 i nie jest już potrzebny. Będzie działał w PHP5, ale wyświetli E_STRICTostrzeżenie w PHP od wersji 5.0.0 do wersji 5.1.2, od kiedy był przestarzały. Od PHP 5.3 var jest przestarzałe i jest synonimem „public”.

Przykładowe użycie:

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

10
„Uwaga: Metoda deklarowania zmiennej za pomocą varsłowa kluczowego PHP 4 jest nadal obsługiwana ze względu na kompatybilność (jako synonim publicsłowa kluczowego). W PHP 5 przed 5.1.3 jego użycie wygenerowałoby E_STRICTostrzeżenie.” php.net/manual/en/language.oop5.visibility.php EDYCJA: Właśnie widziałem, że jest już cytowany w innej odpowiedzi . Ale powinieneś odpowiednio edytować swój.
Sk8erPeter

Oznacza to, że konieczne jest użycie publicsłowa kluczowego dla zmiennej członka. Czy to prawda? Nie można tak po prostu powiedzieć $x;?
limeandcoconut

1
więc czy zaleca się po prostu trzymać się public / private i całkowicie ignorować var, ponieważ nie martwimy się pracą z przestarzałymi wersjami PHP?
NoodleOfDeath,

1
Od 2019 r .: php-fig.org/psr/psr-12/#43-properties-and-constants stwierdza, że varnie można go używać, a widoczność musi być zadeklarowana we wszystkich właściwościach.
Charles Wood,

79

Słowo varkluczowe służy do deklarowania zmiennych w klasie w PHP 4 :

class Foo {
    var $bar;
}

W PHP 5 wprowadzono widoczność właściwości i metod ( public, protectedi private), dlatego też varjest przestarzała.


17
W PHP 5.3 varjest przestarzałe :)
Ionuț G. Stan

8
Jeśli jest przestarzałe, jaka jest najlepsza praktyka teraz w 5.3 - korzystać z niego, czy nie? Czy potrafisz tego używać private var $foo = 'bar';?
Tom Auger

1
Czy ktoś wie, dlaczego był przestarzały?
Simon East

19
W 5.1.3 było to nieaktualne - podano jedynie powody „ze względu na kompatybilność” . Myślę, że najlepszą praktyką jest używanie go tylko wtedy, gdy musisz być kompatybilny z PHP 4. Z pewnością nie rób private var- to varpublic
zepsuje

2
varnie jest prawdziwym synonimem, publicponieważ nie można go używać do deklarowania elementów statycznych lub stałych.
Colin O'Dell,

27

Cytuję z http://www.php.net/manual/en/language.oop5.visibility.php

Uwaga: Metoda PHP 4 deklarowania zmiennej ze słowem kluczowym var jest nadal obsługiwana ze względu na kompatybilność (jako synonim publicznego słowa kluczowego). W PHP 5 przed 5.1.3 jego użycie wygenerowałoby E_STRICTostrzeżenie.


Zrobiłem testy. Nie zwrócono E_STRICT! sandbox.onlinephpfunctions.com/code/…
Wallace Maxters

1
@WallacedeSouza, to dlatego, że użyłeś PHP 7 w swoim przykładzie. Było nieważne tylko w wersjach 5.0 - 5.1.3
RedClover

8

Odpowiedź: Od PHP 5.3 i >The varsłowo kluczowe jest równoważna publicprzy deklarowaniu zmiennych wewnątrz klasy.

class myClass {
  var $x;
}

jest taki sam jak (dla php 5.3 i >):

class myClass {
  public $x;
}

Historia: Wcześniej była to norma dla deklarowania zmiennych w klasach, chociaż później stała się amortyzowana, ale później (PHP 5.3) stała się niezalecana.


5

Zasadniczo jest to stary styl i nie używaj go w nowszej wersji PHP. Lepiej użyć zamiast tego publicznego słowa kluczowego; jeśli nie jesteś zakochany w słowie kluczowym var. Więc zamiast używać

class Test {
    var $name;
}

Posługiwać się

class Test {
   public $name;
}

dlaczego tak mówisz? czy są jakieś wieści o vardeprecjacji, o których nie słyszałem? obie powinny być synonimami
NappingRabbit

Z podręcznika PHP: „Metoda deklarowania zmiennej ze słowem kluczowym var 4 jest nadal obsługiwana ze względu na kompatybilność (jako synonim publicznego słowa kluczowego)”. php.net/manual/en/language.oop5.visibility.php
Tomark


1

var jest używany jak public. jeśli zmienna jest zadeklarowana w ten sposób w klasie var $ a; if oznacza, że ​​jego zakres jest publiczny dla klasy. w prostych słowach var ~ public

var $a;
public

0

tu i teraz w 2018użyciu vardo deklaracji zmiennych jest synonimem publicjak w

class Sample{
    var $usingVar;
    public $usingPublic;

    function .....

}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.