Що робить ключове слово 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
"Примітка. Метод PHP 4 для оголошення змінної за допомогою varключового слова все ще підтримується з міркувань сумісності (як синонім publicключового слова). У PHP 5 до 5.1.3 його використання створює E_STRICTпопередження." php.net/manual/en/language.oop5.visibility.php EDIT: Я щойно бачив, що вже цитується в іншій відповіді . Але слід редагувати свої відповідно.
Sk8erPeter

Це означає, що необхідно використовувати publicключове слово для для змінної члена. Це правда? Не можна просто сказати $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;
}

З РНР 5 власності і видимість методу ( public, protectedі 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/…
Wallace Maxters

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. Краще замість цього використовувати загальнодоступне ключове слово; якщо ви не закохані у ключове слово var. Тож замість використання

class Test {
    var $name;
}

Використовуйте

class Test {
   public $name;
}

чому ти так кажеш? Чи є новини про varзастаріле, про що я не чув? обидва мають бути синонімами
NappingRabbit

З посібника PHP: "Метод PHP 4 оголошення оголошень змінної за допомогою ключового слова var все ще підтримується з міркувань сумісності (як синонім загальнодоступного ключового слова)." php.net/manual/en/language.oop5.visibility.php
Tomark


1

var використовується як public. якщо оголошено подібне в класі var $ a; якщо означає, що його сфера є загальнодоступною для класу. простими словами 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.