在PHP类内的变量中声明新对象示例

jv4diomz  于 2023-01-19  发布在  PHP
关注(0)|答案(1)|浏览(132)

好吧,我会很清楚,我得到了一个错误,而声明一个变量作为另一个类的示例。这两个类是在不同的文件,我做了一个简单的例子,它显示快速什么错误。
我得到的错误如下:

PHP message: PHP Fatal error:  New expressions are not supported in this context in Nameclassfile.php on line 6"

我不是phpMaven,目前我运行的是php8.1,我甚至不确定是否允许将变量声明为其他类的示例。
好吧,我的准则是:

  • 一级文件:Nameclassfile.php
<?php
    require_once "Valueclassfile.php";
    class NameClass {
        private $name;
        private $value = new ValueClass();

        function __construct() {
            $this->name = "Default name";
        }

        function get_name() {
            return $this->name;
        }

    }
?>
  • 二级文件:Valueclassfile.php
<?php
    class ValueClass {
        private $value;

        function __construct() {
            $this->value = "Default Value";
        }

        function get_value() {
            return $this->value;
        }
    }
?>

我希望你能帮我一把,最好的问候。

yhived7q

yhived7q1#

你当然可以将变量声明为其他类的示例,但是你只能为你的属性初始化声明静态(即编译时)值。

class Foo {
    private $value = 123;
}

你不能像这样使用需要执行的代码(例如运行时):

class Foo {
    private $value = call_some_function();
}

或者这个:

class Foo {
    private $value = new ValueClass();
}

简单的解决方法是在构造函数中进行初始化:

class NameClass {
    private $value;

    function __construct() {
        $this->value = new ValueClass();
    }
}

注意,在8.1+中,您可以使用构造函数属性提升特性,该特性允许new的示例:

class NameClass {
    function __construct(private $value = new ValueClass()) {
    }
}

相关问题