나는 codeigniter에 새로 왔지만 OOP와 MVC를 이해하고있다. 나는 많은 레일스 개발을하고있다. 내가 아직 알아 내지 못한 한 가지는 codeigniter에 클래스 수준 메서드를 작성하고 컨트롤러에서 액세스하는 방법입니다. 예를 들어, 내가 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
은 모든 "사용자"에 대해 행동하고 계산합니다. 수업 수준의 방법이어야합니다. 동의하니? 그렇다면 클래스 레벨 함수 내에서 프레임 워크를 사용하여 데이터베이스에 어떻게 액세스 할 수 있는지 알고 있습니까?
감사합니다.
왜 downvote입니까? 이것은 "클래스 수준 함수 내에서 프레임 워크를 사용하여 데이터베이스에 액세스 할 수있는 방법"이라는 질문에 대한 대답입니다. – putolaruan