Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该在类或构造函数中放置变量吗?PHP_Php_Class_Variables - Fatal编程技术网

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

我应该在类或构造函数中放置变量吗?PHP,php,class,variables,Php,Class,Variables,我的问题是OOP的最佳实践之一。Im使用Codeigniter框架/PHP 我有一门课: class Test() { var $my_data = array(); function my_function() { //do something } } 这样在类中声明$my_数据可以吗?还是应该放在构造函数中?基本上,每个函数都将写入$my_数据,因此在某种意义上,它将是一个类范围的变量(global?,不确定术语) 另外,我应该使用var还

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

我有一门课:

class Test() {

    var $my_data = array();

    function my_function() {

        //do something

    }

}
这样在类中声明$my_数据可以吗?还是应该放在构造函数中?基本上,每个函数都将写入$my_数据,因此在某种意义上,它将是一个类范围的变量(global?,不确定术语)


另外,我应该使用var还是private?var不赞成声明变量范围吗?

如果它属于“类”,则将其放入类中。如果它属于“类的一个实例”,则将其放入构造函数中。听起来你应该使用这个会话。

如果你想
$my_data
测试中的所有方法都可用,你必须在类级别声明它

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中使用访问修饰符。
库本身没有定义任何访问修饰符。

您不能像这样声明它们:$this->my_data=array();在类中的任何地方都可以使用它吗?@evichookie-是的,但是最好在顶部有一个变量列表,因为您仍然使用PHP4语法吗?