我可以在PHP中声明一个没有$的变量

时间:2011-11-28 12:08:44

标签: php variables zend-certification

我在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);
}

它说

  

使用其中一个PPP运算符在PHP中声明属性,然后是它们   名:

     

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

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

4 个答案:

答案 0 :(得分: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);
}

所以,你的代码来自的书肯定是错误的。

答案 1 :(得分:3)

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

public var1="Test"; //String

会给你:

Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE

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

答案 2 :(得分:2)

PHP中的变量是"represented by a dollar sign followed by the name of the variable"。虽然没有美元的变量have been requested,但我怀疑他们是否曾经看到它们被启用。

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

答案 3 :(得分:0)

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

  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);

另一方面,每件事都很好。 谢谢