현재 CodeIgniter로 코딩을 해왔으며 다른 프로그래머의 코드를 프로그래밍하거나 읽을 때 일반적으로 입력에서 데이터를 얻는 두 가지 방법이 있습니다. 컨트롤러에서 입력을 얻은 다음 다음과 같이 모델에 매개 변수로 전달합니다.
class MyController extends Controller
{
.
.
.
public function login()
{
$username = $this->input->post('username');
$password = $this->input->post('password');
$this->load->model('User');
$this->User->login($username, $password);
}
}
class User extends Model
{
.
.
.
public function login($username, password)
{
....
}
}
다른 하나는 다음과 같이 모델에서 입력 매개 변수에 직접 액세스합니다.
class MyController extends Controller
{
.
.
.
public function login()
{
$this->load->model('User');
$this->User->login();
}
}
class User extends Model
{
.
.
.
public function login()
{
$username = $this->input->post('username');
$password = $this->input->post('password');
}
}
더 나은 방법은 무엇이라고 생각하십니까? 모델에 더 많은 독립성을 부여하기 때문에 첫 번째로 기울어 지지만 샘플 코드에서 두 번째 방법을 봅니다. 및 다른 개발자에게 제공됩니다. 물론 두 번째 방법은 특히 5-10 개의 입력 필드를 받아 들일 때 더 짧습니다.
- 답변 # 1
- 답변 # 2
논쟁의 여지가 있음을 알고 있지만 이것은 아마도 CodeIgniter MVC정말이 무엇인지에 대한 간단한 설명 일 것입니다.
모델-액세스 데이터베이스 (CRUD)
컨트롤러-로직 구현, 라이브러리 및 헬퍼 호출 및보기로 전달
조회수-사용자가 보는 것
라이브러리-모델을 사용하는 기능
도움말-모델을 사용할 필요가없는 기능
모델 또는 컨트롤러 내에login ()을 추가하고 싶지않습니다.로그인을 처리하기 위해라이브러리를 만듭니다. ()기능으로모델을 직접 호출합니다.
컨트롤러는 라이브러리를 사용하고$this->input->post변수를 전달한 다음 그에 따라 뷰를 렌더링합니다.
자세한 정보는 여기에서 찾을 수 있습니다 : CodeIgniter MVC 및 CodeIgniter 라이브러리
- 답변 # 3
조금 늦었지만 모델 내에서 깨끗한 모델 (가능한 한) 설정 변수를 유지하고 인수를 전달하기 위해 필요에 따라. 예 :
class MyController extends Controller { public function login() { $this->load->model('User'); //Set your model's variables, before executing the model function $this->User->username = $this->input->post('username'); $this->User->pass = $this->input->post('pass'); $this->User->login(); } } class User extends Model { var $username; var $pass; public function login() { $this->db->where('username', $this->username); $this->db->where('pass', $this->pass); etc... } }
- 답변 # 4
첫 번째 프로세스를 선호하고 컨트롤러에서 데이터의 유효성 검사 및 표준화 프로세스를 그대로 둡니다.
- 답변 # 5
항상 첫 번째 프로세스를 사용했습니다. 또한 컨트롤러에서 모든 작업을 수행하고 DB 상호 작용을위한 모델을 남겨 둡니다. 그래도 확실한 답은 없다고 생각합니다. 업무에 적합한 것을 사용하십시오.
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- JavaScript 변수를 HTML div에 '출력'하는 방법
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 화면에서 찾은 요소를 찾을 수없는 경우 셀레늄
첫 번째 샘플을 사용하면 다른 개발자가 뷰를 변경하고 컨트롤러를 수정할 수 있지만 모델을 '있는 그대로'유지 관리 할 수 있습니다. 리팩토링이 좋은 예입니다.
두 번째 샘플을 선택하면 입력 이름이 모델에 의해 잠기므로 가능한 한 적게 모델을 변경하므로 뷰에서 개발을 잠급니다.
즉, ...
첫 번째 샘플 : 융통성있는
두 번째 샘플 : 'd * mnit, 다시는 안됩니다!'