我应该在类或构造函数中放置变量吗?PHP

Should I place variables in class or constructor? PHP

我的问题是OOP的最佳实践之一。 我使用Codeigniter框架/ PHP。

我有一节课:

1
2
3
4
5
6
7
8
9
10
11
class Test() {

    var $my_data = array();

    function my_function() {

        //do something

    }

}

可以在类中声明$ my_data吗? 还是应该进入构造函数? 基本上每个函数都会写入$ my_data,所以在某种意义上它将是一个类范围的变量(全局?,不确定术语)

另外,我应该使用var还是私有? var是否已弃用,有利于声明变量范围?


如果希望$my_data可用于Test中的所有方法,则必须在类级别声明它。

1
2
3
4
5
6
7
8
9
class Test {

    private $my_data1 = array(); // available throughout class

    public function __construct() {
        $my_data2 = array(); // available only in constructor
    }

}

var已弃用,与public同义。如果$my_data不需要在Test之外可用,则应将其声明为private


如果你在构造函数外部声明变量,那就很好了。
实际上,codeigniter不会让你在构造函数中给出任何参数。
并且在实例化类时,变量将自动赋值。
默认情况下,类中的任何php变量和函数都将具有公共访问权限。
我不需要在codeigniter上使用访问修饰符。
它自己的库没有定义任何访问修饰符。


如果它属于"类",则将其放入类中。如果它属于"类的实例",则将其放在构造函数中。听起来有点像你应该使用会话。


找到我的'var'问题的答案这里PHP关键字'var'做什么?