我应该将变量放在类还是构造函数中? PHP
Posted
技术标签:
【中文标题】我应该将变量放在类还是构造函数中? PHP【英文标题】:Should I place variables in class or constructor? PHP 【发布时间】:2011-03-31 22:10:21 【问题描述】:我的问题是 OOP 的最佳实践之一。我正在使用 Codeigniter 框架/php。
我有一堂课:
class Test()
var $my_data = array();
function my_function()
//do something
这样在类中声明 $my_data 可以吗?还是应该进入构造函数?基本上每个函数都会写入 $my_data 所以从某种意义上说它是一个类范围的变量(全局?,不确定术语)
另外,我应该使用 var 还是 private ?是否不推荐使用 var 以支持声明变量范围?
【问题讨论】:
有什么理由你还在使用 PHP4 语法? 【参考方案1】:如果您希望$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
。
【讨论】:
你不能也像这样声明它们:$this->my_data = array();在课堂上的任何地方都可以使用它吗? @evilchookie - 是的,但最好在顶部有一个正在使用的变量列表【参考方案2】:如果它属于“类”,则将其放在类中。如果它属于“类的实例”,则将其放入构造函数中。不过,听起来您应该使用会话。
【讨论】:
【参考方案3】:如果你在构造函数之外声明变量就很好。 实际上,codeigniter 不会让您在构造函数中提供任何参数。 当类被实例化时,变量将自动赋值。 默认情况下,类中的任何 php 变量和函数都将具有公共访问权限。 我真的不需要在 codeigniter 上使用访问修饰符。 它自己的库没有定义任何访问修饰符。
【讨论】:
以上是关于我应该将变量放在类还是构造函数中? PHP的主要内容,如果未能解决你的问题,请参考以下文章