CodeIgniter의 다른 모델 내부에서 모델에 액세스할 수 있습니까?
-
09-06-2019 - |
문제
인증이 필요한 CodeIgniter를 사용하여 웹앱을 작성 중입니다.모든 인증을 처리하는 모델을 만들었습니다.그러나 다른 모델 내부에서 이 인증 모델에 액세스하는 방법을 찾을 수 없습니다.다른 모드 내부에서 모델에 액세스하는 방법이 있습니까, 아니면 CodeIgniter 내부에서 인증을 처리하는 더 나은 방법이 있습니까?
해결책
일반적으로 객체 내부에 객체를 생성하고 싶지는 않습니다.이는 나쁜 습관입니다. 대신 명확한 API를 작성하고 모델에 모델을 삽입하세요.
<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>
다른 팁
아마도 이 문제를 다른 방법으로 해결해야 할 수도 있지만 모델 내부에 모델을 로드할 수 있는 것 같습니다.보다 CodeIgniter 포럼 토론을 위해.
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();
}
}
또한 객체 내부에 객체를 생성해서는 안 된다는 Till의 말을 이해하지 못합니다.물론 그래야 합니다!객체를 인수로 보내는 것은 나에게 훨씬 덜 명확해 보입니다.
모델에서 인증을 처리하지 마세요.데이터베이스나 LDAP 등과 인터페이스하려면 모델만 사용하십시오.
인증 및 권한 부여를 관리하는 데 사용하는 인증 라이브러리를 만들었습니다.컨트롤러에서 이와 같은 라이브러리에 액세스할 수 있습니다.
이제 새로운 CodeIgniter를 사용하면 모델 내에서 모델을 로드할 수 있습니다.
제휴하지 않습니다 StackOverflow