Que fait le mot-clé PHP 'var'?

427

C'est probablement une question très banale, mais je n'ai pas pu trouver la réponse ni via les moteurs de recherche Web, ni sur php.net. Veuillez me diriger vers l'endroit où je peux lire à ce sujet, si vous n'avez pas le temps de l'expliquer.

  1. Que signifie le mot-clé «var» en PHP?
  2. Existe-t-il des différences entre PHP4 et PHP5?
joelpet
la source
4
Je suppose que lorsque vous avez posé cette question le 30 juillet 2009, celle-ci n'avait pas encore été publiée sur php.net/manual/en/language.oop5.visibility.php ?: "Remarque: La méthode PHP 4 pour déclarer une variable avec le Le mot-clé var est toujours pris en charge pour des raisons de compatibilité (comme synonyme du mot-clé public). En PHP 5 avant 5.1.3, son utilisation génèrerait un avertissement E_STRICT. " Ou peut-être que vous ne l'aviez pas trouvé. Mais la réponse est clairement énoncée sur php.net.
Jaime Montoya
C'est vraiment incroyable de voir quels voyages PHP a passés ces dernières années!
Mehrdad Shokri

Réponses:

384

C'est pour déclarer des variables de membre de classe en PHP4, et n'est plus nécessaire. Il fonctionnera en PHP5, mais émettra un E_STRICTavertissement en PHP de la version 5.0.0 à la version 5.1.2, à partir du moment où il a été déprécié. Depuis PHP 5.3, var n'est plus obsolète et est synonyme de «public».

Exemple d'utilisation:

class foo {
    var $x = 'y'; // or you can use public like...
    public $x = 'y'; //this is also a class member variables.
    function bar() {
    }
}
karim79
la source
10
"Remarque: La méthode PHP 4 de déclaration d'une variable avec le varmot-clé est toujours prise en charge pour des raisons de compatibilité (en tant que synonyme du publicmot - clé). Dans PHP 5 avant 5.1.3, son utilisation générerait un E_STRICTavertissement." php.net/manual/en/language.oop5.visibility.php EDIT: Je viens de voir que cela a déjà été cité dans une autre réponse . Mais vous devez modifier le vôtre en conséquence.
Sk8erPeter
Cela implique qu'il est nécessaire d'utiliser le publicmot clé avec pour une variable membre. Est-ce vrai? Ne peut-on pas simplement dire $x;?
limeandcoconut
1
est-il donc recommandé de s'en tenir à public / private et d'ignorer complètement var car nous ne sommes pas inquiets de travailler avec des versions obsolètes de PHP?
NoodleOfDeath
1
À partir de 2019: php-fig.org/psr/psr-12/#43-properties-and-constants indique que cela varne doit pas être utilisé et que la visibilité doit être déclarée sur toutes les propriétés.
Charles Wood
79

Le varmot-clé est utilisé pour déclarer des variables dans une classe en PHP 4 :

class Foo {
    var $bar;
}

Avec la propriété et la méthode PHP 5 , la visibilité ( public, protectedet private) a été introduite et varest donc obsolète.

Gombo
la source
17
En PHP 5.3 varest déprécié :)
Ionuț G. Stan
8
S'il est déprécié, quelle est la meilleure pratique maintenant en 5.3 - pour l'utiliser ou ne pas l'utiliser? Pouvez-vous l'utiliser comme ça private var $foo = 'bar';?
Tom Auger
1
Quelqu'un sait pourquoi il a été déprécié?
Simon East
19
Il n'était pas déprécié en 5.1.3 - les seules raisons données sont "pour des raisons de compatibilité" . Je pense que la meilleure pratique consiste à ne l'utiliser que si vous devez être compatible avec PHP 4. Certainement pas private var- cela cassera les choses très rapidement, tout comme varun synonyme de publicPHP 5.
cincodenada
2
varn'est pas un véritable synonyme publiccar il ne peut pas être utilisé pour déclarer des membres statiques ou des constantes.
Colin O'Dell
27

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

Remarque: La méthode PHP 4 de déclaration d'une variable avec le mot clé var est toujours prise en charge pour des raisons de compatibilité (en tant que synonyme du mot clé public). En PHP 5 avant 5.1.3, son utilisation générerait un E_STRICTavertissement.

taatparya
la source
J'ai fait des tests. Aucun E_STRICT retourné! sandbox.onlinephpfunctions.com/code/…
Wallace Maxters
1
@WallacedeSouza, c'est parce que vous avez utilisé PHP 7 dans votre exemple. Il n'était invalide que dans les versions 5.0 - 5.1.3
RedClover
8

Réponse: Depuis php 5.3 et >, le varmot-clé est équivalent à publiclors de la déclaration de variables à l'intérieur d'une classe.

class myClass {
  var $x;
}

est le même que (pour php 5.3 et >):

class myClass {
  public $x;
}

Historique: C'était auparavant la norme pour déclarer des variables dans les classes, bien que plus tard il soit devenu amorti, mais plus tard (PHP 5.3) il est devenu non amorti.

Webeng
la source
5

Donc, fondamentalement, c'est un ancien style et ne l'utilisez pas pour une version plus récente de PHP. Il vaut mieux utiliser un mot clé public à la place; si vous n'êtes pas amoureux du mot clé var. Donc, au lieu d'utiliser

class Test {
    var $name;
}

Utilisation

class Test {
   public $name;
}
kta
la source
pourquoi tu dis ça? y a-t-il des nouvelles d' varêtre dépréciées que je n'ai pas entendues? les deux devraient être synonymes
NappingRabbit
Extrait du manuel PHP: "La méthode PHP 4 de déclaration d'une variable avec le mot clé var est toujours prise en charge pour des raisons de compatibilité (en tant que synonyme du mot clé public)." php.net/manual/en/language.oop5.visibility.php
Tomark
1

var est utilisé comme public .si une variable est déclarée comme ceci dans une classe var $ a; if signifie que sa portée est publique pour la classe. en mots simples var ~ public

var $a;
public
kumar
la source
0

ici et maintenant en 2018utilisant varpour la déclaration de variable est synonyme de publiccomme dans

class Sample{
    var $usingVar;
    public $usingPublic;

    function .....

}
NappingRabbit
la source