如何在 PHP 中的对象变量中执行文本串联?

发布于 2024-10-18 07:48:18 字数 139 浏览 5 评论 0原文

如果我使用“点”为 PHP 类中的变量赋值,则会失败。

例如:

class bla {
       public $a = 'a' . 'b';
}

否则我应该如何处理这个问题?

If I use a "dot" to assign a value in a variable in a PHP class, it fails.

For example:

class bla {
       public $a = 'a' . 'b';
}

How should I approach this otherwise?

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

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

发布评论

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

评论(2

断爱 2024-10-25 07:48:18

您只能在构造函数中执行此操作,因为类变量/属性必须在使用常量表达式声明时进行初始化。来自手册

此声明可以包含初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且不能依赖于运行时信息才能进行评估。

这意味着您不能使用任何运算符或函数调用。

class bla {
    public $a;

    public function __construct() {
        $this->a = 'a' . 'b';
    }
}

You can only do that in the constructor, as class variables/properties must be initialized on declaration with constant expressions. From the manual:

This declaration 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.

This means you can't use any operators or function calls.

class bla {
    public $a;

    public function __construct() {
        $this->a = 'a' . 'b';
    }
}
白云悠悠 2024-10-25 07:48:18

我正在尝试完全相同的事情:

class someClass{
    public $var = APP . DIRECTORY_SEPARATOR . "someFolder";
}

但这在我的本地计算机上有效,但在服务器上无效。在咒骂了一个多小时但没有找到任何线索后,我想起我的本地计算机安装了较新版本的 XAMPP,因此是不同的 PHP 版本。所以看起来在 PHP 版本 5.5.11 中这是不可能的,但在版本 5.6.8 中你实际上可以组合字符串。

我刚刚在测试服务器上安装了新的 XAMPP 版本,看看这是否属实。

I was trying the exact same thing:

class someClass{
    public $var = APP . DIRECTORY_SEPARATOR . "someFolder";
}

This however worked on my local machine but not on the server. After cursing for over an hour and not finding a clue I remembered that my local machine had a newer version of XAMPP installed and thus a different PHP version. So it seems that in PHP version 5.5.11 this was not possible but in version 5.6.8 you can actually combine strings.

I just installed the new XAMPP version on the test server to see if this is really true.

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