为什么在尝试设置类变量时会出现此错误

发布于 2024-08-25 17:58:16 字数 349 浏览 4 评论 0原文

我是 PHP 新手,所以也许我忽略了这里的一些内容,但以下内容:

class someClass {

    var $id = $_GET['id'];

    function sayHello() {

        echo "Hello";

    }

}

给出以下错误:

解析错误:语法错误,第 13 行 C:\xampp\htdocs\files\classes.php 中出现意外的 T_VARIABLE< /strong>

如果我将变量 $id 设置为字符串而不是 $_GET['id'] ,那么一切都很好。

I'm new to PHP so maybe I am overlooking something here but the following:

class someClass {

    var $id = $_GET['id'];

    function sayHello() {

        echo "Hello";

    }

}

gives the following error:

Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\files\classes.php on line 13

If instead of $_GET['id'] I set the variable $id to a string, everything is fine though.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无法回应 2024-09-01 17:58:16

如果不使用构造函数,则不能以这种方式将常量以外的任何内容分配给类成员。

请参阅手册

[属性]的声明可以包括初始化,但该初始化必须是常量值——也就是说,它必须能够在编译时进行计算,并且不能依赖于运行-时间信息以便进行评估。

另一种方法是使用构造函数设置值:

class someClass {

    var $id;

    public function __construct(){
        $this->id = $_GET['id'];
    }

    function sayHello() {
        echo "Hello";
    }
}

You cannot assign anything except constants to a class member in that way without using a constructor.

See the manual:

declaration [of a property] may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.

The alternative method of doing it is to use a constructor to set the value:

class someClass {

    var $id;

    public function __construct(){
        $this->id = $_GET['id'];
    }

    function sayHello() {
        echo "Hello";
    }
}
笑梦风尘 2024-09-01 17:58:16

您应该在构造函数中分配变量

class someClass {

    function __construct() {
        $this->id = $_GET['id'];
    }

}

You should assign your variable in a constructor

class someClass {

    function __construct() {
        $this->id = $_GET['id'];
    }

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文