2010-06-17 44 views
0

如果我想在我的模型了一些静态方法,所以我可以说User::get_registered_users()并让它做一些像笨静态类问题

public static function get_registered_users() 
{ 
    $sql = "SELECT * FROM `users` WHERE `is_registered` = 0"; 
    $this->db->query($sql); 
    // etc... 
} 

是否有可能访问$this->db对象或创建一个新的为静态方法?

+0

许多框架出于各种原因不使用静态方法。其中最重要的是PHP5.3中提供的后期静态绑定,但之前没有。你将无法在静态方法中使用'$ this',你将不得不实例化一个新的数据库实例并调用查询。 – 2010-06-17 21:02:27

+0

@Matt:对,我该怎么做? – 2010-06-17 21:07:28

回答

0

Matt S是正确的,虽然Kohana是为PHP5构建的,所以以前的兼容性问题并不大。

静态方法无法访问其他变量。如果变量被定义为self :: db,那么你可以使用它,你可能想要这样做来实例化它。

静态方法是最好的事情,不需要对象,如格式化文本,重定向网页等

3

很简单:

get_instance()->db...

$CI =& get_instance(); 
$CI->db->get('users')->result(); 
$CI->session->set_userdata('login', TRUE); 

+0

在向OP源代码发布建议时,如果实际使用OP源代码并对其进行更改,将会很有帮助。 – dbf 2012-09-14 00:35:19