Я очень новичок в codeigniter, но понимаю ООП и 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
не работает, потому что он говорит, потому что я использую метод db для функции уровня класса в get_total_users_count
. Другими словами, $ this не имеет метода db, когда я ссылаюсь на класс.
Так что теперь мой вопрос немного более теоретический. Я всегда думал, что методы экземпляра следует использовать только тогда, когда метод действует на конкретный экземпляр класса. Имеет смысл, верно? Однако get_total_users_count
действует на всех «пользователей» и считает их. Просто кажется, что это должен быть метод уровня класса. Ты согласен? Если да, знаете ли вы, как я могу получить доступ к базе данных из каркаса внутри функции уровня класса?
Спасибо!