2

我了解 PHP 不允许我在 ClassA 中创建新的 ClassB 实例,如果创建不在函数范围内。或者我只是不明白...

class ClassA {

const ASD = 0;
protected $_asd = array();
//and so on

protected $_myVar = new ClassB(); // here I get *syntax error, unexpected 'new'* underlining 'new'

// functions and so on
}

我是否需要某种构造函数,还是有一种方法可以按照我的意愿以自由方式实际创建对象实例,就像我在 Java 或 C# 中所做的那样。还是使用 Singleton 是与我的方法最接近的唯一解决方案?

PS ClassB 与 ClassA 位于同一包和文件夹中。

4

2 回答 2

4

根据PHP 文档

声明可能包括初始化,但该初始化必须是一个常量值——也就是说,它必须能够在编译时被评估,并且不能依赖运行时信息才能被评估。

因此,您需要$_myVar构造函数中实例化:

protected $_myVar;    

public function __contruct() {
   $this->_myVar = new ClassB();
}
于 2013-11-05T16:17:44.100 回答
2

是的,有一个构造函数(见下文)

class ClassA {

    const ASD = 0;
    protected $_asd = array();
    //and so on

    protected $_myVar; // initialization not allowed directly here

        public function __contruct() {
            $this->_myVar = new ClassB();
        }
    }
于 2013-11-05T16:17:44.880 回答