로드 된 모델의 메소드를 하드 코딩 된 메소드 이름 대신 변수 이름으로 호출하려고합니다. if-then 구문을 사용하지 않고도 컨트롤러에서 추상화 톤을 제공합니다.Codeigniter 모델 메소드를 변수로 호출하기
여기에 내가 원하는 것은 변수 이름으로 백 로그 함수를 호출 할 수 있도록 모델
class Reports_model extends CI_Model {
public function __construct()
{
$this->load->database();
}
public function backlog()
{
//Do stuff
}
입니다입니다. 다음은 컨트롤러의 : 내가 무엇을 말할 수에서
class Reports extends CI_Controller {
public function __construct() {
parent::__construct();
}
public function get_reports($report_name)
{
$this->load->model('reports_model');
$report_name = 'backlog';
$data['data'] = $this->reports_model->$report_name();
}
, 내 코드가 정확히 예 2 http://php.net/manual/en/functions.variable-functions.php에 같은 (그리고 아마 뭔가 바보를 누락),하지만 난의 줄에서이 오류를 받고 있어요 함수 호출 :
이정의되지 않은 속성 : 보고서 : $ reports_model
두 번째 대답은 확실히 효과가 있지만 모든 모델 메서드에 대한 컨트롤러에 메서드가 없기를 바라고 있습니다. 컨트롤러에서 모델의 동일한 이름으로 메서드를 호출하는 한 가지 메서드가 필요합니다. 지정하지 않아도됩니다 (의미가있는 경우). 나중에 코드를 변경하지 않고 사물을 추가하는 것이 훨씬 유연해질 것입니다. – VPel
ok이 문제는 codeigniter 라우터를 사용할 수 있습니다. (http://codeigniter.com/user_guide/general/routing.html) 루어를 생성하고 모든 요청은 동일한 컨트롤러 메소드를 호출합니다. 그리고이 메소드에서는'call_user_func' 디폴트 PHP 함수를 사용할 수 있습니다. http://php.net/manual/en/function.call-user-func.php#example-4726 – hkulekci
좋아, 두 곳의 수도 R이 작동했는데, 문자 그대로 100 개의 다른 모델로드가 있기 때문에 기이하다./내가 그 사건과 그 일을 학대 한 곳에서 계속 진행되는 – VPel