【问题标题】:Should I place variables in class or constructor? PHP我应该将变量放在类还是构造函数中? 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 语法?

标签: php class variables


【解决方案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 上使用访问修饰符。 它自己的库没有定义任何访问修饰符。

    【讨论】:

      猜你喜欢
      • 2010-12-31
      • 1970-01-01
      • 2016-02-20
      • 2016-09-29
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多