2013-07-28 3 views
0

Codeigniter의 모델에있는 함수에 같은 이름을 지정하면 모델을로드 할 때 해당 함수가 자동으로 호출됩니다. 내가 모델을로드하는 것이 아니라 함수를 호출하기 때문에이자동으로 호출되는 모델의 함수

$this->my_model->my_model(); 

처럼 내 모델 함수를 호출 할 필요가 없습니다이 경우

//controller 
$this->load->model('my_model'); 

//model 

class My_model extends CI_model { 

function my_model { 
} 

} 

.

누군가가이 동작을 설명 할 수 있습니까? 나는 이것에 관해서 문서에서 아무것도 발견하지 못했다.

답변

1

이것은 객체 지향 프로그래밍의 일반적인 개념입니다. 이 함수는 Constructor의 역할을합니다. 생성자는 객체의 인스턴스가 만들어 질 때 호출됩니다.

__construct() 메서드를 사용하는 PHP에서는 클래스의 생성자를 선언하는 것이 좋습니다. 주어진 클래스의() 기능 __construct를 찾을 수 PHP 5 경우 이전 버전과의 호환성을 위해

, 및 클래스를 상속하지 않았다 그러나, PHP 4, 생성자는 그래서, 클래스 이름을 사용하여 선언 상위 클래스에서 이전 스타일의 생성자 함수 인 을 클래스 이름으로 검색합니다.

모델은 클래스입니다. 클래스에 __construct() 메서드가 없으므로 PHP는 my_model 함수를 클래스의 생성자로 취급합니다 (클래스 이름과 동일하므로).

모델에 다음과 같은 방법이 필요할 수 있습니다. 그러면 my_model이 생성자로 처리되지 않게됩니다.

나는이 혼란을 가져올 수 있으므로 PHP의 클래스와 동일한 이름의 메서드를 사용하지 않는 것이 좋습니다. PHP의 문서에는 일부 useful information on constructors이 있습니다.

관련 문제