【问题标题】:Can I declare a variable without $ in PHP我可以在 PHP 中声明一个没有 $ 的变量吗
【发布时间】:2011-11-28 12:08:44
【问题描述】:

我在一本 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 是如何声明的。不违法吗?

【问题讨论】:

  • 显然是一个错误。我的副本有同样的故障,即使它似乎是不同的版本(我在第 122 页有这个列表)
  • 您确定您复制的所有内容都正确吗?
  • 这是一个错字。你可以有一个像这样设置的常量,并且没有'$'。按照惯例,它们通常采用 UPPER_CASE。 "const VAR1 = '测试';"

标签: php variables zend-certification


【解决方案1】:

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

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

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

【讨论】:

  • 其实这不是我写的,我是从4shared.com/document/ufVfSY1Q/…第141页拿的
  • @KanishkaPanamaldeniya:是的,我明白了,但我只是在修复了代码中明显的遗漏之后。 ;)
  • 我虽然可能在 PHP 中有一种方法可以声明一个没有 $ 符号的变量 :(
  • 您可以使用常量,但它们不是变量。见php.net/constantphp.net/define(另请注意,我不推荐这个,只是提供参考。)
【解决方案2】:

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

public var1="Test"; //String

会给你:

Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE

详情请见http://codepad.org/meMrSmfA

【讨论】:

    【解决方案3】:

    PHP 中的变量是"represented by a dollar sign followed by the name of the variable"。尽管无美元变量have been requested,但我怀疑我们是否曾看到它们启用。

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

    【讨论】:

      【解决方案4】:

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

      否则一切都很好。 谢谢你

      【讨论】:

        猜你喜欢
        • 2022-01-09
        • 2020-07-27
        • 1970-01-01
        • 1970-01-01
        • 2010-10-01
        • 2016-02-29
        • 2013-11-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多