5菲律宾比索。将数组声明为类成员的两种方法 [已关闭]

2022-08-30 18:34:44

将数组声明为类成员时,应以哪种方式完成?

class Test1 {
    private $paths = array();

    public function __construct() {
        // some code here
    }
}

class Test2 {
    private $paths;

    public function __construct() {
        $this->paths = array();
        // some code here
    }
}

就良好做法和绩效而言,哪一个更好?你会推荐什么?


答案 1

我建议在声明类变量时执行此操作。构造函数可以在扩展类中被重写,这可能会导致E_NOTICEs甚至E_WARNINGs,如果你的任何函数依赖于这个变量是一个数组(甚至是一个空的数组)


答案 2

如果要在初始化期间动态填充数组,请在构造函数中执行此操作。如果它包含固定值,请在属性声明中执行此操作。

尝试在声明中动态填充数组(例如,通过使用某个函数或方法的返回值)会导致解析错误:

// Function call is not valid here
private $paths = get_paths();

性能在这里不是一个真正的问题,因为每个都有自己的用例。


推荐