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

时间:2010-08-19 03:59:32

标签: php class variables

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

我有一个班级:

class Test() {

    var $my_data = array();

    function my_function() {

        //do something

    }

}

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

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

4 个答案:

答案 0 :(得分:7)

如果您希望$my_data中的所有方法都可以使用Test,那么必须在类级别声明它。

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

答案 1 :(得分:0)

What does PHP keyword 'var' do?

找到我的'var'问题的答案

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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