O que a palavra-chave PHP 'var' faz?


427

Esta é provavelmente uma pergunta muito trivial, mas não consegui encontrar a resposta nem por meio de mecanismos de pesquisa na web nem no php.net. Por favor, apenas me direcione para onde eu possa ler sobre isso, se você não tiver tempo para explicar.

  1. O que a palavra-chave 'var' significa em PHP?
  2. Existem diferenças entre o PHP4 e o PHP5?

4
Acho que quando você fez essa pergunta em 30 de julho de 2009, ela ainda não havia sido publicada em php.net/manual/pt/language.oop5.visibility.php ?: "Nota: O método PHP 4 de declarar uma variável com o A palavra-chave var ainda é suportada por motivos de compatibilidade (como sinônimo da palavra-chave pública). No PHP 5 anterior à 5.1.3, seu uso geraria um aviso E_STRICT. " Ou talvez você não tenha encontrado. Mas a resposta está claramente indicada em php.net.
Jaime Montoya

É realmente incrível ver que jornadas o PHP passou nesses anos!
Mehrdad Shokri 23/03

Respostas:


384

É para declarar variáveis ​​de membros de classe no PHP4 e não é mais necessário. Ele funcionará no PHP5, mas emitirá um E_STRICTaviso no PHP da versão 5.0.0 até a versão 5.1.2, a partir de quando foi preterido. Desde o PHP 5.3, var não foi preterido e é sinônimo de 'public'.

Exemplo 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() {
    }
}

10
"Nota: O método PHP 4 de declarar uma variável com a varpalavra-chave ainda é suportado por razões de compatibilidade (como sinônimo da publicpalavra - chave). No PHP 5 anterior à 5.1.3, seu uso geraria um E_STRICTaviso." php.net/manual/en/language.oop5.visibility.php EDIT: Acabei de ver que isso já foi citado em outra resposta . Mas você deve editar o seu de acordo.
precisa saber é o seguinte

Isso implica que é necessário usar a publicpalavra-chave com para uma variável de membro. Isso é verdade? Não se pode simplesmente colocar $x;?
Limeandcoconut # 03/02

1
por isso, recomenda-se apenas ficar com public / private e ignorar var completamente, pois não estamos preocupados em trabalhar com versões obsoletas do PHP?
NoodleOfDeath

1
A partir de 2019: estados php-fig.org/psr/psr-12/#43-properties-and-constants que varnão devem ser usados ​​e a visibilidade deve ser declarada em todas as propriedades.
Charles Wood

79

A varpalavra-chave é usada para declarar variáveis ​​em uma classe no PHP 4 :

class Foo {
    var $bar;
}

Com a propriedade e método do PHP 5 , a visibilidade ( public, protectede private) foi introduzida e, portanto, varobsoleta.


17
No PHP 5.3 varestá obsoleto :)
Ionuț G. Stan

8
Se for descontinuado, qual é a melhor prática agora na versão 5.3 - usá-lo ou não? Você pode usá-lo como private var $foo = 'bar';?
Tom Auger

1
Alguém sabe por que foi reprovado?
Simon East

19
Não foi reprovado no 5.1.3 - os únicos motivos apresentados são "por motivos de compatibilidade" . Eu acho que a melhor prática é usá-lo somente se você precisa ser compatível com o PHP 4. Certamente não fazer private var- que vai quebrar as coisas bem rápido, como varé apenas um sinônimo para publicem PHP 5.
cincodenada

2
varnão é um sinônimo verdadeiro, publicpois não pode ser usado para declarar membros ou constantes estáticas.
Colin O'Dell 31/03

27

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

Nota: O método PHP 4 de declarar uma variável com a palavra-chave var ainda é suportado por razões de compatibilidade (como sinônimo da palavra-chave pública). No PHP 5 anterior à 5.1.3, seu uso geraria um E_STRICTaviso.


Eu fiz testes. Não retornou E_STRICT! sandbox.onlinephpfunctions.com/code/...
Wallace Maxter

1
@WallacedeSouza, é porque você usou o PHP 7 no seu exemplo. Ele era inválido apenas nas versões 5.0 - 5.1.3
RedClover

8

Resposta: De php 5.3 e >, a varpalavra-chave é equivalente a publicquando declarar variáveis dentro de uma classe.

class myClass {
  var $x;
}

é o mesmo que (para php 5.3 e >):

class myClass {
  public $x;
}

História: Anteriormente, era a norma para declarar variáveis ​​nas classes, embora mais tarde fosse depreciada, mas mais tarde (PHP 5.3) tornou-se não depreciada.


5

Então, basicamente, é um estilo antigo e não o usa para a versão mais recente do PHP. Melhor usar a palavra-chave Pública, se você não estiver apaixonado pela palavra-chave var. Então, ao invés de usar

class Test {
    var $name;
}

Usar

class Test {
   public $name;
}

por que você diz isso? há notícias de vardepreciação que eu não ouvi? os dois devem ser sinônimo
NappingRabbit

No manual do PHP: "O método PHP 4 de declarar uma variável com a palavra-chave var ainda é suportado por razões de compatibilidade (como sinônimo da palavra-chave pública)." php.net/manual/en/language.oop5.visibility.php
Tomark em


1

var é usado como público. se uma variável é declarada assim em uma classe var $ a; se significa que seu escopo é público para a classe. em palavras simples var ~ public

var $a;
public

0

aqui e agora no 2018uso varde declaração de variável é sinônimo de publiccomo em

class Sample{
    var $usingVar;
    public $usingPublic;

    function .....

}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.