PHP关键字'var'有什么作用?

joe*_*pet 411 php keyword

这可能是一个非常微不足道的问题,但我无法通过网络搜索引擎或php.net找到答案.如果您没有时间解释,请告诉我我可以阅读的内容.

  1. 'var'关键字在PHP中意味着什么?
  2. PHP4和PHP5之间有什么区别吗?

kar*_*m79 376

它用于在PHP4中声明类成员变量,不再需要它.它将在PHP5中运行,但会E_STRICT在PHP 5.0.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() {
    }
}
Run Code Online (Sandbox Code Playgroud)

  • _"注意:由于兼容性原因(作为`public`关键字的同义词),仍然支持使用`var`关键字声明变量的PHP 4方法.在5.1.3之前的PHP 5中,它的用法将生成一个` E_STRICT`警告."_ http://php.net/manual/en/language.oop5.visibility.php编辑:我刚刚看到已经引用[在另一个答案中](http://stackoverflow.com/一个/五十一万七千七百零五分之三百八十四万四千七百零三).但是你应该相应地编辑你的. (10认同)
  • 截至 2019 年:https://www.php-fig.org/psr/psr-12/#43-properties-and-constants 规定不得使用 `var`,并且必须在所有属性上声明可见性。 (2认同)

Gum*_*mbo 77

var关键字用于在PHP 4中声明类中的变量:

class Foo {
    var $bar;
}
Run Code Online (Sandbox Code Playgroud)

使用PHP 5 引入了属性和方法可见性(public,protectedprivate),因此var不推荐使用.

  • 它在[5.1.3](http://www.php.net/releases/5_1_3.php)中未被提及 - 给出的唯一理由是["出于兼容性原因"](http://www.php.net/手动/ EN/language.oop5.visibility.php).我认为最好的做法是只在你需要与PHP 4兼容时使用它.当然不要做'private var` - 这会很快破坏事情,因为`var`只是PHP中`public`的同义词5. (18认同)
  • 在PHP 5.3中`var`被弃用:) (16认同)
  • 如果它已被弃用,现在5.3中的最佳做法是什么 - 使用它还是不使用它?你能用它来像'private var $ foo ='bar';`? (8认同)
  • “ var”不是“ public”的真正同义词,因为它不能用于声明静态成员或常量。 (2认同)

小智 26

我引自http://www.php.net/manual/en/language.oop5.visibility.php

注意:出于兼容性原因,仍然支持使用var关键字声明变量的PHP 4方法(作为public关键字的同义词).在5.1.3之前的PHP 5中,其用法将生成E_STRICT警告.


Web*_*eng 7

答:php 5.3和开始>,该var关键字与public在类中声明变量时等效。

class myClass {
  var $x;
}
Run Code Online (Sandbox Code Playgroud)

与(对于php 5.3和>)相同:

class myClass {
  public $x;
}
Run Code Online (Sandbox Code Playgroud)

历史:以前是在类中声明变量的规范,尽管后来被弃用了,但是后来(PHP 5.3)却不再使用了。


kta*_*kta 7

所以基本上它是一种旧样式,不要将它用于较新版本的 PHP。最好改用 Public 关键字;如果您不喜欢 var 关键字。所以而不是使用

class Test {
    var $name;
}
Run Code Online (Sandbox Code Playgroud)

class Test {
   public $name;
}
Run Code Online (Sandbox Code Playgroud)