Что делает PHP ключевое слово var?


427

Вероятно, это очень тривиальный вопрос, но я не смог найти ответ ни с помощью поисковых систем, ни на php.net. Пожалуйста, просто направьте меня туда, где я могу прочитать об этом, если у вас нет времени, чтобы объяснить.

  1. Что означает ключевое слово var в PHP?
  2. Есть ли различия между PHP4 и PHP5?

4
Я предполагаю, что когда вы задавали этот вопрос 30 июля 2009 года, он еще не был опубликован на php.net/manual/en/language.oop5.visibility.php ?: "Примечание. Метод PHP 4 для объявления переменной с помощью Ключевое слово var по-прежнему поддерживается в целях совместимости (в качестве синонима открытого ключевого слова). В PHP 5 до 5.1.3 его использование приводило к предупреждению E_STRICT. " Или, может быть, вы не нашли его. Но ответ четко изложен на php.net.
Хайме Монтойя

Удивительно видеть, какие путешествия PHP прошел за эти годы!
Мехрдад Шокри

Ответы:


384

Он предназначен для объявления переменных класса в PHP4 и больше не нужен. Он будет работать в PHP5, но выдает E_STRICTпредупреждение в PHP с версии 5.0.0 до версии 5.1.2, начиная с того момента, когда это устарело. Начиная с PHP 5.3, var не устарел и является синонимом 'public'.

Пример использования:

class foo {
    var $x = 'y'; // or you can use public like...
    public $x = 'y'; //this is also a class member variables.
    function bar() {
    }
}

10
«Примечание. Метод объявления переменной с varключевым словом в PHP 4 по- прежнему поддерживается по причинам совместимости (в качестве синонима для publicключевого слова). В PHP 5 до версии 5.1.3 его использование приводило к E_STRICTпредупреждению». php.net/manual/en/language.oop5.visibility.php РЕДАКТИРОВАТЬ: я только что увидел, что это уже было указано в другом ответе . Но вы должны отредактировать свой соответственно.
Sk8erPeter

Это означает, что необходимо использовать publicключевое слово with для переменной-члена. Это правда? Нельзя просто сказать $x;?
limeandcoconut

1
поэтому рекомендуется просто придерживаться public / private и полностью игнорировать var, так как мы не беспокоимся о работе с устаревшими версиями PHP?
NoodleOfDeath

1
По состоянию на 2019 год: php-fig.org/psr/psr-12/#43-properties-and-constants заявляет, что varне должен использоваться, и видимость должна быть объявлена ​​во всех свойствах.
Чарльз Вуд

79

varКлючевое слово используется для описания переменных в классе в PHP 4 :

class Foo {
    var $bar;
}

В PHP 5 свойство и метод visibility ( public, protectedand private) были введены и поэтому varустарели.


17
В PHP 5.3 varустарела :)
Ionuț G. Stan

8
Если это устарело, какова лучшая практика сейчас в 5.3 - использовать это или не использовать? Вы можете использовать это как private var $foo = 'bar';?
Том Оже

1
Кто-нибудь знает, почему это устарело?
Саймон Ист

19
В 5.1.3 он не был определен - приведены только причины «совместимости» . Я думаю, что лучше всего использовать его только в том случае, если вам нужно быть совместимым с PHP 4. Конечно, не делайте этого private var- это очень быстро сломает вещи, как varпросто синоним для publicPHP 5.
cincodenada

2
varне является истинным синонимом, publicпоскольку его нельзя использовать для объявления статических членов или констант.
Колин О'Делл

27

Я цитирую http://www.php.net/manual/en/language.oop5.visibility.php

Примечание. Метод объявления переменной PHP 4 с ключевым словом var по-прежнему поддерживается в целях совместимости (как синоним открытого ключевого слова). В PHP 5 до 5.1.3 его использование будет генерировать E_STRICTпредупреждение.


Я делал тесты. Нет возврата E_STRICT! sandbox.onlinephpfunctions.com/code/…
Уоллес Макстерс

1
@WallacedeSouza, это потому, что вы использовали PHP 7 в вашем примере. Это было недействительно только в версиях 5.0 - 5.1.3
RedClover

8

Ответ: С PHP 5.3 и >, то varключевое слово эквивалентно publicпри объявлении переменных внутри класса.

class myClass {
  var $x;
}

такой же как (для php 5.3 и >):

class myClass {
  public $x;
}

История: Раньше это было нормой для объявления переменных в классах, хотя позже это стало устаревшим, но позже (PHP 5.3) оно стало устаревшим.


5

Так что в основном это старый стиль и не используйте его для более новой версии PHP. Лучше вместо этого использовать ключевое слово Public, если вы не влюблены в ключевое слово var. Так что вместо использования

class Test {
    var $name;
}

использование

class Test {
   public $name;
}

почему ты сказал это? Есть ли какие-то новости о varтом, что я устарела? два должны быть синонимами
NappingRabbit

Из руководства по PHP: «Метод объявления переменной PHP 4 с ключевым словом var по-прежнему поддерживается в целях совместимости (как синоним открытого ключевого слова)». php.net/manual/en/language.oop5.visibility.php
отметка


1

var используется как public. Если varable объявлен так в классе var $ a; if означает, что его область является общедоступной для класса. в простых словах var ~ public

var $a;
public

0

здесь и сейчас в 2018использовании varдля объявления переменных является синонимом publicкак в

class Sample{
    var $usingVar;
    public $usingPublic;

    function .....

}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.