我的问题是OOP的最佳实践之一。我使用Codeigniter框架/ PHP。
我有一个班级:
class Test() {
var $my_data = array();
function my_function() {
//do something
}
}
可以在类中声明$ my_data吗?还是应该进入构造函数?基本上每个函数都会写入$ my_data,所以在某种意义上它将是一个类范围的变量(全局?,不确定术语)
另外,我应该使用var还是私有? var是否已弃用,以支持声明变量范围?
答案 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)
答案 2 :(得分:0)
如果它属于“班级”,请将其放入班级。如果它属于“类的实例”,则将其放在构造函数中。听起来有点像你应该使用会话。
答案 3 :(得分:0)
如果你在构造函数外面声明变量,那就很好了。 实际上,codeigniter不会让你在构造函数中给出任何参数。 并且在实例化类时,变量将自动赋值。 默认情况下,类中的任何php变量和函数都将具有公共访问权限。 我不需要在codeigniter上使用访问修饰符。 它自己的库没有定义任何访问修饰符。