Cosa fa la parola chiave PHP 'var'?


427

Questa è probabilmente una domanda molto banale, ma non sono stato in grado di trovare la risposta né attraverso i motori di ricerca web, né su php.net. Per favore, indirizzami dove posso leggere a riguardo, se non hai tempo per spiegare.

  1. Cosa significa la parola chiave "var" in PHP?
  2. Ci sono differenze tra PHP4 e PHP5?

4
Immagino che quando hai posto questa domanda il 30 luglio 2009, questo non fosse ancora stato pubblicato su php.net/manual/en/language.oop5.visibility.php ?: "Nota: il metodo PHP 4 per dichiarare una variabile con il La parola chiave var è ancora supportata per motivi di compatibilità (come sinonimo della parola chiave pubblica). In PHP 5 prima della 5.1.3, il suo utilizzo genererebbe un avviso E_STRICT. " O forse non l'hai trovato. Ma la risposta è chiaramente indicata su php.net.
Jaime Montoya,

È davvero sorprendente vedere quali viaggi ha attraversato PHP in questi anni!
Mehrdad Shokri,

Risposte:


384

È per dichiarare le variabili dei membri della classe in PHP4 e non è più necessario. Funzionerà in PHP5, ma genererà un E_STRICTavviso in PHP dalla versione 5.0.0 alla versione 5.1.2, a partire da quando è stato deprecato. Dal momento che PHP 5.3, var è stato deprecato ed è sinonimo di "pubblico".

Esempio di utilizzo:

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

10
"Nota: il metodo PHP 4 per dichiarare una variabile con la varparola chiave è ancora supportato per motivi di compatibilità (come sinonimo della publicparola chiave). In PHP 5 prima della 5.1.3, il suo utilizzo genererebbe un E_STRICTavviso." php.net/manual/en/language.oop5.visibility.php EDIT: ho appena visto che è già stato citato in un'altra risposta . Ma dovresti modificare il tuo di conseguenza.
Sk8erPeter,

Ciò implica che è necessario utilizzare la publicparola chiave con per una variabile membro. È vero? Non si può semplicemente dire $x;?
limeandcoconut,

1
quindi è consigliato attenersi a public / private e ignorare del tutto var poiché non siamo preoccupati di lavorare con versioni obsolete di PHP?
NoodleOfDeath

1
A partire dal 2019: php-fig.org/psr/psr-12/#43-properties-and-constants afferma che varnon devono essere utilizzati e che la visibilità deve essere dichiarata su tutte le proprietà.
Charles Wood,

79

La varparola chiave viene utilizzata per dichiarare le variabili in una classe in PHP 4 :

class Foo {
    var $bar;
}

Con PHP 5 la proprietà e la visibilità del metodo ( public, protectede private) sono state introdotte e pertanto varsono obsolete.


17
In PHP 5.3 varè deprecato :)
Ionuț G. Stan

8
Se è deprecato, qual è la migliore procedura ora in 5.3 - usarlo o non usarlo? Puoi usarlo come private var $foo = 'bar';?
Tom Auger,

1
Qualcuno sa perché è stato deprecato?
Simon East,

19
Non era specificato in 5.1.3 - gli unici motivi indicati sono "per motivi di compatibilità" . Penso che la migliore pratica sia usarla solo se devi essere compatibile con PHP 4. Certamente non farlo private var- questo romperà le cose molto velocemente, come varè solo un sinonimo di publicin PHP 5.
cincodenada

2
varnon è un vero sinonimo di in publicquanto non può essere utilizzato per dichiarare membri o costanti statici.
Colin O'Dell,

27

Cito da http://www.php.net/manual/en/language.oop5.visibility.php

Nota: il metodo PHP 4 per dichiarare una variabile con la parola chiave var è ancora supportato per motivi di compatibilità (come sinonimo della parola chiave pubblica). In PHP 5 prima della 5.1.3, il suo utilizzo avrebbe generato un E_STRICTavviso.


Ho fatto dei test. Non restituito E_STRICT! sandbox.onlinephpfunctions.com/code/…
Wallace Maxters,

1
@WallacedeSouza, perché hai usato PHP 7 nel tuo esempio. Non era valido solo nelle versioni 5.0 - 5.1.3
RedClover del

8

Risposta: da php 5.3 e >la varparola chiave equivale a publicquando si dichiarano variabili all'interno di una classe.

class myClass {
  var $x;
}

è lo stesso di (per php 5.3 e >):

class myClass {
  public $x;
}

Storia: In precedenza era la norma per dichiarare variabili nelle classi, anche se in seguito divenne deprezzata, ma in seguito (PHP 5.3) divenne non deprezzata.


5

Quindi fondamentalmente è un vecchio stile e non lo uso per la versione più recente di PHP. Meglio usare invece la parola chiave pubblica; se non sei innamorato della parola chiave var. Quindi invece di usare

class Test {
    var $name;
}

Uso

class Test {
   public $name;
}

perché dici così? c'è notizia di varessere deprecato che non ho mai sentito? i due dovrebbero anche essere
NappingRabbit il

Dal manuale di PHP: "Il metodo PHP 4 per dichiarare una variabile con la parola chiave var è ancora supportato per motivi di compatibilità (come sinonimo della parola chiave pubblica)." php.net/manual/en/language.oop5.visibility.php
Tomark


1

var è usato come pubblico .se una variabile è dichiarata così in una classe var $ a; se significa che il suo ambito è pubblico per la classe. in parole semplici var ~ public

var $a;
public

0

qui e ora in 2018uso varper la dichiarazione delle variabili è sinonimo di publiccome in

class Sample{
    var $usingVar;
    public $usingPublic;

    function .....

}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.