【问题标题】:CodeIgniter static class questionCodeIgniter 静态类问题
【发布时间】:2010-06-17 20:58:49
【问题描述】:

如果我想在我的模型中有几个静态方法,那么我可以说 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 对象或为静态方法创建一个新对象?

【问题讨论】:

  • 许多框架由于各种原因不使用静态方法。其中最重要的是后期静态绑定,它在 PHP5.3 中提供,但之前没有。您将无法在静态方法中使用$this,您必须实例化一个新的数据库实例并对其调用查询。
  • @Matt:正确,我该怎么做?

标签: php codeigniter static singleton


【解决方案1】:

很简单:

get_instance()->db...

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

【讨论】:

  • 在向 OP 源代码发布建议时,实际使用 OP 源代码并进行更改会很有帮助。
【解决方案2】:

Matt S 是正确的,尽管 Kohana 是为 PHP5 构建的,所以以前的兼容性不是什么大问题。

静态方法无法访问其他变量。如果变量被定义为 self::db,那么您可以使用它,并且您可能希望以这种方式实例化它。

静态方法最适合不需要对象的事情,例如格式化文本、重定向页面等。

【讨论】:

    猜你喜欢
    • 2017-11-13
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多