【发布时间】:2009-11-18 02:24:31
【问题描述】:
我对 codeigniter 很陌生,但我了解 OOP 和 MVC,因为我做了很多 Rails 开发。我还没有弄清楚的一件事是如何在 codeigniter 中编写一个类级别的方法并在控制器中访问它。例如,我有
<?php
class User_model extends Model {
function user_model()
{
parent::Model();
}
public static function get_total_users_count(){
$results = $this->db->query("SELECT * FROM bhr_users GROUP BY userid");
if($results){
return $results->num_rows();
}
return 0;
}
}
?>
我认为我在这里所做的是为我的模型建立了一个类级别的方法,我应该可以使用 User_model::get_total_users_count() 调用它现在在我的控制器中,以前的程序员称为“欢迎”我有类似的东西:
<?php
class Welcome extends Controller {
function Welcome()
{
parent::Controller();
$this->load->model('bhr_model');
$this->load->model('user_model');
}
function index()
{
$invite = $this->uri->segment(3);
if($invite == 'invitefriends') {
$pagedata['invitefriends'] = $invite;
} else {
$pagedata['invitefriends'] = '';
}
$pagedata['numberofpeople'] = User_model::get_total_users_count();
$this->load->view('default_page', $pagedata);
}
}
上述对get_total_users_count 的方法调用不起作用,因为它说因为我在get_total_users_count 的类级函数上使用了db 方法。换句话说,当我引用一个类时,$this 没有 db 方法。
所以现在我的问题更具理论性。我一直认为只有在方法作用于类的特定实例时才应该使用实例方法。有道理,对吧?但是,get_total_users_count 作用于所有“用户”并计算它们。看起来这应该是一个类级别的方法。你同意吗?如果有,你知道我如何通过类级别函数中的框架访问数据库吗?
谢谢!
【问题讨论】:
标签: php codeigniter