Kohana助手属性

时间:2011-12-29 20:31:55

标签: kohana helper static-variables static-classes

我有一个一直困扰着我的问题。目前,我已经开始使用Kohana 3.2 Framework。我已经编写了一个帮助程序来处理某些功能 - 我有许多方法,它们(应该是)声明为STATIC。但是,所有这些方法都以某种方式与数据库一起使用,因此我需要加载模型。目前,每个方法都有一个非静态变量,如下所示:

  

$ comment = new Model_Comments;
  $ comment-> addComment(" ABC&#34);

好吧,它似乎正在工作,但后来我想通过使用class属性来保存模型的实例(同时也是类)来摆脱这种冗余。

这样的事情:

  

private static $ comment; //声明属性
  self :: $ comment = new Model_Comment; //这是在帮助器__constuct方法中完成的   自:: $ comment-> addComment(" ABC&#34); //并在方法中调用它。

但是,我失败了:在非对象上调用成员函数addComment()

问题是:是否可以这样做?也许还有其他一些方法?

很抱歉很长一段时间,感谢您的建议! :P

1 个答案:

答案 0 :(得分:1)

如果不对类的实例进行操作,静态方法就无法调用非静态方法。所以,你提出的建议是行不通的。可能有办法完成类似的事情,但尝试以下方法呢:

您可以为“helper”类实现单例或工厂模式。然后,您可以在实例化/返回实例时创建模型(作为属性)。使用“helper”类的实际实例,您不必担心静态范围问题。

换句话说,您可以在应用程序中创建一个类似助手的类作为“普通”类,在创建时,它始终具有必要的模型。 如果这种方法有意义,我会很乐意进一步提供帮助。

大卫