2

我在一本 PHP 书籍中看到了这段代码(PHP 架构师,ZEND PHP 5 认证指南第 141 页)

class foo{
  public $bar;
  protected $baz;
  private $bas;

  public var1="Test"; //String
  public var2=1.23; //Numericvalue
  public var3=array(1,2,3);
}

它说

在 PHP 中使用 PPP 运算符之一声明属性,后跟它们的名称:

请注意,与普通变量一样,类属性可以在声明时进行初始化。但是,初始化仅限于赋值(而不是通过评估表达式)。例如,您不能通过调用函数来初始化变量——这是您只能在类的方法之一(通常是构造函数)中执行的操作。

我无法理解如何var1, var2, var3声明。这不是违法的吗?

4

4 回答 4

4

示例代码(几乎)有效(只是缺少几个 $ 符号。)

class foo
{
    // these will default to null
    public $bar;
    protected $baz;
    private $bas;

    // perfectly valid initializer to "string" value
    public $var1 = "Test"; //String

    // perfectly valid initializer to "float" value
    public $var2 = 1.23;    //Numericvalue

    // perfectly valid initializer to "array" value
    // (array() is a language construct/literal, not a function)
    public $var3 = array(1,2,3);
}

因此,您的代码来自的书肯定是错误的。

于 2011-11-28T12:16:09.857 回答
3

不,这是一个错误。定义:

public var1="Test"; //String

会给你:

Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE

有关详细信息,请参阅http://codepad.org/meMrSmfA

于 2011-11-28T12:15:55.640 回答
2

PHP 中的变量“由一个美元符号后跟变量名表示”尽管已经请求了无美元变量,但我怀疑我们是否曾经看到它们被启用。

简而言之:您的代码无效。

于 2011-11-28T12:35:28.147 回答
0

在 php 变量中是自动转换。无论你想保留在变量中,都不需要声明它的类型。但是一件强制性的事情是,当你要在 php 中声明一个变量时,你必须使用“$”,你错过了。Book 声明是

  public var1="Test"; //String
  public var2=1.23; //Numericvalue
  public var3=array(1,2,3);

这是一个错误的声明 正确的是

public $var1="Test"; //String
public $var2=1.23; //Numericvalue
public $var3=array(1,2,3);

否则一切都很好。谢谢

于 2014-01-27T19:57:37.243 回答