인증이 필요한 CodeIgniter를 사용하여 webapp을 작성했습니다. 내 모든 인증을 처리하는 모델을 만들었습니다. 그러나 다른 모델 내부에서이 인증 모델에 액세스하는 방법을 찾을 수 없습니다. 다른 모드에서 모델에 접근하는 방법이 있습니까, 아니면 CodeIgniter에서 인증을 처리하는 더 좋은 방법입니까?CodeIgniter에서 다른 모델 내부에서 모델에 액세스 할 수 있습니까?
답변
일반적으로 개체 내부에 개체를 만들고 싶지는 않습니다. 이는 나쁜 습관입니다. 대신 명확한 API를 작성하고 모델에 모델을 삽입하십시오.
<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>
모델에서 인증을 처리하지 마십시오. 모델을 사용하여 데이터베이스와 인터페이스하거나 ldap 또는 기타와 인터페이스하십시오.
나는 인증 및 권한 부여를 관리하는 데 사용하는 Auth 라이브러리를 만들었습니다. 컨트롤러에서 이와 같은 라이브러리에 액세스 할 수 있습니다.
필자는 항상 모델에 oauth 구현을 넣었습니다. 인증 코드 –
으로 컨트롤러를 망가뜨리는 일은 싫지만 MY_controller를 만들고 모든 oauth를 수행합니다. – tomexsans
모델 내부에서 모델을로드 할 수 있지만 다른 방법으로는이를 해결해야합니다. 자세한 내용은 CodeIgniter forums을 참조하십시오.
class SomeModel extends Model
{
function doSomething($foo)
{
$CI =& get_instance();
$CI->load->model('SomeOtherModel','NiceName',true);
// use $CI instead of $this to query the other models
$CI->NiceName->doSomethingElse();
}
}
또한 내게는 오브젝트 내부에 오브젝트를 생성해서는 안된다는 것을 이해할 수 없습니다. 당연히 당신은해야합니다! 인자를 인자로 보내는 것은 나에게 분명하지 않다.
불만 사항은 불필요하게 더 강력하게 두 모델 간의 종속성을 만드는 것입니다. 예를 들어, 테스트 할 때 SomeModel에 SomeOtherModel의 모의 버전을 제공하는 것이 좋습니다. 전자가 후자를 직접로드하는 경우에는 그렇게 할 수 없습니다. 또는 플러그 인 시스템을 사용하도록 기존 코드를 리팩토링 할 때와 같이 나중에 동일한 인터페이스를 사용하는 다른 모델을 사용하도록 코드를 수정하십시오. –
구글은 오픈 소스 의존성 주입 프레임 워크를 가지고있다. 그것은 Java 용이지만 종속성 삽입의 장점과 단점을 설명합니다. http://code.google.com/p/google-guice/ –
@Rob Howard 의존성 주입을 너무 많이 수행하는 것과 같은 일이 있습니다. 사용하는 모든 단일 객체를 개별적으로 테스트해야하는 것은 아니므로 사용하는 모든 단일 객체를 주입 할 필요는 없습니다. 오히려 당신은 전체적으로 함께 작동하는 시스템과 모듈을 테스트하기를 원하며 서로 격리되고 주입되어야합니다. –
새로운 CodeIgniter를 사용하여 모델 내에 모델을로드 할 수 있습니다.
- 1. CodeIgniter에서 다른 모델에서 한 모델에 어떻게 액세스합니까?
- 2. 레일 용 클립 클립 : 모델에 액세스 할 수 있습니까?
- 3. CodeIgniter에서 모델에 라이브러리로드
- 4. has_one과 관련된 모델에 액세스 할 수 없습니다.
- 5. Backbone.js에서 모델에 액세스 할 수 없습니다.
- 6. 다른 메서드 내부에서 메서드에 액세스
- 7. CodeIgniter에서 active_group 실시간을 전환 할 수 있습니까?
- 8. jinja2 템플릿 내부에서 객체의 key_name에 액세스 할 수 있습니까?
- 9. 다른 클래스의 Java.util지도에 액세스 할 수 있습니까?
- 10. codeigniter에서 플러그인의 컨트롤러를로드 할 수 있습니까?
- 11. CodeIgniter에서 "보기"기능을 오버로드 할 수 있습니까?
- 12. AsyncTask 내부에서 다른 인수를 호출 할 수 있습니까?
- 13. 다른 foreach 내부에서 foreach를 사용할 수 있습니까?
- 14. ScrollViewer 내부에서 ScrollViewer를 비활성화 할 수 있습니까?
- 15. Application.DoEvents() 내부에서 예외를 catch 할 수 있습니까?
- 16. 모델 마이그레이션을 생성 할 수 있습니까?
- 17. 은 application.html.erb에서 모델 databasetable의 값에 액세스 할 수 있습니까?
- 18. Firefox 개체 모델에 액세스
- 19. 내부 nat 내부에서 ping 할 수 있습니까?
- 20. 기존 모델에 모델 참조 추가
- 21. Django ORM의 수퍼 클래스 모델에서 서브 베드 클래스 모델에 액세스 할 수 있습니까?
- 22. 유효성 검사기가 전체 모델에 액세스 할 수 있어야합니까?
- 23. 내 모델에 DLL을 적용하지 않고도 내 모델에 액세스 할 수있게 만드는 방법
- 24. Grails의 레이아웃보기에서 모델에 액세스
- 25. CakePHP : 한 번에 하나씩 여러 다른 모델에 속하는 모델
- 26. CodeIgniter에서 설정 파일 내에 "config"파일을로드 할 수 있습니까?
- 27. codeigniter에서 업로드 클래스 사용 - 모델 또는 컨트롤러?
- 28. xml을 액세스 할 수 있습니까?
- 29. Rails/RSpec : 다른 모델에 종속되어있는 모델 추측 적 비헤이비어?
- 30. Codeigniter에서 여러 변수/배열을 반환 할 수 있습니까?
좋은 방법입니까? Model2의 사용자는 Model1에 의존한다는 것을 알고 있어야합니다. 좋은 연습이란 무엇입니까? – Sabya
예, Model1 내부에서 Model2를 초기화하는 대신 종속성을 "주입"하는 것이 더 좋습니다. – Till
DRY 관점에서는 좋지 않습니다. 한 모델의 측면을 변경하고 다른 모델에 대한 동작을 트리거하는 기능이 있다면 어떻게됩니까? – wag2639