¿Qué hace la palabra clave PHP 'var'?

427

Esta es probablemente una pregunta muy trivial, pero no he podido encontrar la respuesta ni a través de los motores de búsqueda web ni en php.net. Por favor, solo dirígeme a donde puedo leer sobre esto, si no tienes tiempo para explicarlo.

  1. ¿Qué significa la palabra clave 'var' en PHP?
  2. ¿Hay alguna diferencia entre PHP4 y PHP5?
joelpet
fuente
44
Supongo que cuando hizo esta pregunta el 30 de julio de 2009, aún no se había publicado en php.net/manual/en/language.oop5.visibility.php ?: "Nota: El método PHP 4 para declarar una variable con el La palabra clave var todavía es compatible por razones de compatibilidad (como sinónimo de la palabra clave pública). En PHP 5 anterior a 5.1.3, su uso generaría una advertencia E_STRICT ". O tal vez no lo habías encontrado. Pero la respuesta se establece claramente en php.net.
Jaime Montoya
¡Es realmente increíble ver qué viajes ha pasado PHP estos años!
Mehrdad Shokri

Respuestas:

384

Es para declarar variables de miembros de clase en PHP4, y ya no es necesario. Funcionará en PHP5, pero generará una E_STRICTadvertencia en PHP desde la versión 5.0.0 hasta la versión 5.1.2, a partir de cuando se desactivó. Desde PHP 5.3, var ha quedado obsoleto y es sinónimo de 'público'.

Ejemplo de uso:

class foo {
    var $x = 'y'; // or you can use public like...
    public $x = 'y'; //this is also a class member variables.
    function bar() {
    }
}
karim79
fuente
10
"Nota: El método PHP 4 para declarar una variable con la varpalabra clave todavía es compatible por razones de compatibilidad (como sinónimo de la publicpalabra clave). En PHP 5 anterior a 5.1.3, su uso generaría una E_STRICTadvertencia". php.net/manual/en/language.oop5.visibility.php EDITAR: Acabo de ver que ya se ha citado en otra respuesta . Pero deberías editar el tuyo en consecuencia.
Sk8erPeter
Esto implica que es necesario usar la publicpalabra clave con para una variable miembro. ¿Es eso cierto? ¿No se puede simplemente poner $x;?
limeandcoconut
1
Entonces, ¿se recomienda seguir con public / private e ignorar completamente var ya que no nos preocupa trabajar con versiones obsoletas de PHP?
NoodleOfDeath
1
A partir de 2019: php-fig.org/psr/psr-12/#43-properties-and-constants indica que varno se debe usar, y la visibilidad se debe declarar en todas las propiedades.
Charles Wood
79

La varpalabra clave se usa para declarar variables en una clase en PHP 4 :

class Foo {
    var $bar;
}

Con PHP 5 se introdujo la propiedad y la visibilidad del método ( public, protectedy private) y, por lo tanto, varestá en desuso.

Gumbo
fuente
17
En PHP 5.3 varestá en desuso :)
Ionuț G. Stan
8
Si está en desuso, ¿cuál es la mejor práctica ahora en 5.3: usarlo o no? ¿Puedes usarlo como private var $foo = 'bar';?
Tom Auger
1
Alguien sabe por qué fue desaprobado?
Simon East
19
No se consideró obsoleto en 5.1.3 ; las únicas razones que se dan son "por razones de compatibilidad" . Creo que la mejor práctica es usarlo solo si necesitas ser compatible con PHP 4. Ciertamente no lo hagas private var, eso romperá las cosas muy rápido, como vares sinónimo de publicPHP 5.
cincodenada
2
varno es un sinónimo verdadero publicya que no se puede usar para declarar miembros estáticos o constantes.
Colin O'Dell el
27

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

Nota: El método PHP 4 para declarar una variable con la palabra clave var todavía es compatible por razones de compatibilidad (como sinónimo de la palabra clave pública). En PHP 5 antes de 5.1.3, su uso generaría una E_STRICTadvertencia.

taatparya
fuente
Hice pruebas No devuelto E_STRICT! sandbox.onlinephpfunctions.com/code/…
Wallace Maxters
1
@WallacedeSouza, eso es porque has usado PHP 7 en tu ejemplo. No era válido solo en las versiones 5.0 - 5.1.3
RedClover
8

Respuesta: De php 5.3 y >, la varpalabra clave es equivalente a publiccuando se declaran variables dentro de una clase.

class myClass {
  var $x;
}

es lo mismo que (para php 5.3 y >):

class myClass {
  public $x;
}

Historia: Anteriormente era la norma para declarar variables en clases, aunque más tarde se depreció, pero más tarde (PHP 5.3) no se depreció.

Webeng
fuente
5

Básicamente es un estilo antiguo y no lo use para la versión más nueva de PHP. Mejor usar palabras clave públicas en su lugar; si no estás enamorado de la palabra clave var. Entonces, en lugar de usar

class Test {
    var $name;
}

Utilizar

class Test {
   public $name;
}
kta
fuente
¿por qué dices eso? ¿Hay noticias de vardesaprobación que no he escuchado? los dos deberían ser sinónimos
NappingRabbit
Del manual de PHP: "El método PHP 4 para declarar una variable con la palabra clave var todavía es compatible por razones de compatibilidad (como sinónimo de la palabra clave pública)". php.net/manual/en/language.oop5.visibility.php
Tomark
1

var se usa como público. si un varable se declara así en una clase var $ a; si significa que su alcance es público para la clase. en palabras simples var ~ public

var $a;
public
kumar
fuente
0

aquí y ahora en el 2018uso varde declaración variable es sinónimo de publiccomo en

class Sample{
    var $usingVar;
    public $usingPublic;

    function .....

}
NappingRabbit
fuente