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?

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

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.


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.


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.


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;
}

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

0

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

class Sample{
    var $usingVar;
    public $usingPublic;

    function .....

}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.