2009-07-30 8 views
370

Ceci est probablement une question très triviale, mais je n'ai pas été en mesure de trouver la réponse ni via les moteurs de recherche, ni sur php.net. S'il vous plaît, dirigez-moi là où je peux lire à ce sujet, si vous n'avez pas le temps de m'expliquer.Que fait le mot-clé PHP 'var'?

  1. Que signifie le mot clé 'var' en PHP?
  2. Existe-t-il des différences entre PHP4 et PHP5?
+1

Je suppose que quand vous avez posé cette question le 30 Juillet 2009, cette »Note: La méthode PHP 4 de déclaration d'une variable avec le mot-clé var est toujours supportée pour des raisons de compatibilité (comme un 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 indiquée sur php.net. –

Répondre

330

C'est pour déclarer des variables membres de classe en PHP4, et n'est plus nécessaire. Il fonctionnera en PHP5, mais déclenchera un avertissement E_STRICT en PHP depuis la version 5.0.0 jusqu'à la version 5.1.2, à partir du moment où il était obsolète. Depuis PHP 5.3, var n'a pas été déprécié 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() { 
    } 
} 
+8

_ "Note: La méthode PHP4 de déclaration d'une variable avec le mot-clé' var' est toujours supportée pour des raisons de compatibilité (comme synonyme du mot-clé 'public'). En PHP 5 avant 5.1.3, son utilisation générerait un E_STRICT' warning. "_ Http://php.net/manual/fr/language.oop5.visibility.php EDIT: Je viens de voir que cela a déjà été cité [dans une autre réponse] (http://stackoverflow.com/a/3844703/517705). Mais vous devriez éditer le vôtre en conséquence. – Sk8erPeter

+0

Cela implique qu'il est * nécessaire * d'utiliser le mot-clé 'public' avec pour une variable membre. Est-ce vrai? Ne peut-on simplement mettre '$ x '? – BrassApparatus

+0

est donc recommandé de coller avec public/private et ignorer entièrement var puisque nous ne sommes pas inquiets de travailler avec des versions obsolètes de PHP? –

70

Le mot-clé est utilisé pour vardeclare variables in a class in PHP 4:

class Foo { 
    var $bar; 
} 

Avec PHP 5 property and method visibility (public, protected et private) a été introduit et donc var est dépréciée.

+13

En PHP 5.3 'var' est de-deprecated :) –

+8

S'il est déconseillé, quelle est la meilleure pratique maintenant en 5.3 - pour l'utiliser ou ne pas l'utiliser? Pouvez-vous l'utiliser comme 'private var $ foo = 'bar';'? –

+1

Quelqu'un sait pourquoi il a été désapprouvé? –

23

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

Note: La méthode PHP 4 de déclarer une variable avec le mot-clé var est toujours pris en charge pour des raisons de compatibilité (comme synonyme pour le mot-clé publique). En PHP 5 avant 5.1.3, son utilisation générerait un avertissement E_STRICT.

+0

J'ai fait des tests. Aucun retour E_STRICT! http://sandbox.onlinephpfunctions.com/code/84652903a92588c23085e688803abfaf0c26a822 –

+0

@WallacedeSouza, c'est parce que vous avez utilisé PHP 7 dans votre exemple. Il était invalide seulement dans les versions 5.0 - 5.1.3 – Soaku

1

Réponse: De php 5.3 et >, le mot-clé var équivaut à public la déclaration des variables dans une classe.

class myClass { 
    var $x; 
} 

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

class myClass { 
    public $x; 
} 

Histoire: Il était auparavant la norme pour déclarer des variables dans les classes, mais est devenu plus tard dépréciée, mais plus tard (PHP 5.3) il est devenu non déprécié.

0

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

class Test { 
    var $name; 
} 

Utilisez

class Test { 
    public $name; 
} 
+0

pourquoi dites-vous cela? Y at-il des nouvelles de 'var' étant obsolète que je n'ai pas entendu? les deux devraient être synonymes – NappingRabbit

1

var est utilisé comme publique .Si un varable est déclarée comme celui-ci dans une classe var $ a; signifie que sa portée est publique pour la classe. dans des mots simplea var ~ publique

var $a; 
public 
0

ici et maintenant à 2018 en utilisant var pour déclaration de variable est synonyme de public comme dans

class Sample{ 
    var $usingVar; 
    public $usingPublic; 

    function ..... 

}