PHP关键字“ var”有什么作用?


427

这可能是一个非常琐碎的问题,但是我既无法通过网络搜索引擎也无法在php.net上找到答案。如果您没有时间解释,请直接引导我到我可以阅读的地方。

  1. “ var”关键字在PHP中是什么意思?
  2. PHP4和PHP5之间有什么区别吗?

4
我想您是在2009年7月30日问这个问题时,尚未在php.net/manual/en/language.oop5.visibility.php上发布此问题吗?:“注意:使用出于兼容性原因,仍支持var关键字(作为public关键字的同义词)。在PHP 5 5.1.3之前的版本中,其用法将生成E_STRICT警告。” 或者,也许您没有找到它。但是答案在php.net上有明确说明。
Jaime Montoya

看到PHP这些年来经历的旅程真是太神奇了!
Mehrdad Shokri

Answers:


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关键字的同义词)。在5.1.3之前的PHP 5中,其用法将产生E_STRICT警告。” php.net/manual/en/language.oop5.visibility.php编辑:我只是看到已经在另一个答案中引用了它。但是您应该相应地对其进行编辑。
Sk8erPeter

这意味着必须public关键字with用于成员变量。真的吗?不能简单地说$x;吗?
limeandcoconut 2015年

1
因此,由于我们不担心使用过时的PHP版本,因此建议仅坚持使用public / private并完全忽略var吗?
NoodleOfDeath

1
截至2019年:php-fig.org/psr/psr-12/#43-properties-and-constants声明var不得使用,并且必须在所有属性上声明可见性。
查尔斯伍德,

79

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

class Foo {
    var $bar;
}

使用PHP 5 ,引入了属性和方法可见性(和),因此已弃用。publicprotectedprivatevar


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仅仅是一个为代名词public的PHP 5
cincodenada

2
var不是真正的同义词,public因为它不能用于声明静态成员或常量。
Colin O'Dell

27

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

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


我做了测试。没有返回E_STRICT!sandbox.onlinephpfunctions.com/code/…–
华莱士·麦克斯特斯

1
@WallacedeSouza,这是因为您在示例中使用了PHP 7。它仅在版本
5.0-5.1.3中

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手册中:“出于兼容性原因,仍支持使用var关键字声明变量的PHP 4方法(作为public关键字的同义词)。” php.net/manual/en/language.oop5.visibility.php
标记


1

var的用法与public相同。如果在var $ a类中这样声明了varable;if表示其范围是该班级的公开范围。用简单的话说var〜public

var $a;
public

0

这里和现在2018使用var的变量声明是同义的public,如

class Sample{
    var $usingVar;
    public $usingPublic;

    function .....

}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.