저는 2 년 동안 CI를 사용해 왔습니다. 실제로 나를 괴롭히는 한 가지는 &get_instance()
입니다. 우리가 도서관, 도우미, 발표자, 모델 등의 내부에있는 동안 그것은 반가 웠지만, 매번 로딩하는 것은 아주 간단합니다. 어딘가에로드하는 것을 잊어 버렸고 $CI->blah->blah()
대신 $this->blah->blah()
을 사용하면 너무 많은 문제가 발생하고 온라인에서 작업하는 경우 오류가 발생했다고 불평하는 클라이언트에게 직면하게됩니다. laravel
에서 응용 프로그램 전체에 instance
을로드 할 필요가 없음을 확인했습니다. laravel
은 autoloading
이고 모든 라이브러리 및 모델은 모두 응용 프로그램의 어느 곳에서나 사용할 수 있기 때문입니다. 그러나 이것은 왜 어떤 특정 장소에서 필요하지 않은 클래스를로드하는 데 불리한 것처럼 보입니다. 이것은 Codeigniter가 유연하다는 것을 나에게 알려주지 만 여전히 나는 대체물을 원합니다. &get_instance()
을 사용하고 싶습니다. 어떤 생각이나 제안? 부디. 모델 또는 코어 모델이나 라이브러리에서Codeigniter에서 & get_instance()를 제거하는 방법
1
A
답변
0
//class MY_Model extends CI_Model
//class SomeLibrary
class Some_model extends CI_Model {
private $_CI;
public function __construct() {
parent::__construct(); //for model or core model
$this->_CI =& get_instance();
}
//if you called attributs who does not exist in that class or parent class
public function __get($key)
{
return $this->_CI->$key;
}
//if you called methods who does not exist in that class or parent class
public function __call($method, $arguments)
{
call_user_func_array(array($this->_CI, $method), $arguments);
}
public function test() {
var_dump($this->some_controller_key);
var_dump($this->some_lib_loaded);
}
}
이 * 아직 멋진 플렉시 인증
//from a Model to keep access of CI_Controller attributs
public function &__get($key)
{
$CI =& get_instance();
return $CI->$key;
}
에서 코드의 조각에서 영감을
을 테스트하지
나는 충격을 받았다 내가 그것을 보았을 때 ^^
To e xplain &__get
, 나는이 마법 메서드를 PHP가 다시 실행하지 않는 두 번째 호출이라고 생각하지만 첫 번째 호출에서 그의 결과를 가져올 것입니다.
+0
주셔서 감사합니다. 나는 그것을 반드시 시험 할 것이다. –
관련 문제
- 1. Codeigniter에서 index.php를 제거하는 방법
- 2. CodeIgniter에서 라이브러리에서 get_instance를 호출 할 때 오류 500이 발생합니다.
- 3. Codeigniter에서 index.php를 리디렉션하고 제거하는 방법
- 4. codeigniter에서 index.php 파일을 제거하는 방법
- 5. UBUNTU에서 codeigniter에서 index.php를 제거하는 방법
- 6. URL codeigniter에서 특수 문자를 제거하는 방법
- 7. fckediter가 codeigniter에서 formating을 제거하는 중
- 8. codeigniter에서 SSL을 구현할 때 콘솔 오류를 제거하는 방법
- 9. CodeIgniter에서 double foreach의 이중 URL 참조를 제거하는 방법
- 10. CodeIgniter에서 페이지 매김의 공백을 제거하는 방법은 무엇입니까?
- 11. CodeIgniter에서 URL에서 index.php를 제거하는 방법은 무엇입니까?
- 12. codeigniter에서 url에서 index.php 파일을 제거하는 방법은 무엇입니까?
- 13. CodeIgniter에서 로깅하는 방법 (PHP)
- 14. codeigniter에서 jquery를 코딩하는 방법
- 15. codeigniter에서 require_once하는 방법
- 16. codeigniter에서 이미지를 자르는 방법?
- 17. codeigniter에서 phpseclib을로드하는 방법
- 18. codeigniter에서 URL을 변경하는 방법
- 19. Codeigniter에서 Favicon을 설정하는 방법
- 20. codeigniter에서 페이지를 인쇄하는 방법?
- 21. codeigniter에서 텍스트를 검색하는 방법?
- 22. CodeIgniter에서 Behat을 사용하는 방법?
- 23. codeigniter에서 요청을 필터링하는 방법
- 24. Codeigniter에서 recaptcha를 통합하는 방법
- 25. Codeigniter에서 페이팔을 구현하는 방법
- 26. Codeigniter에서 SEO를위한 청결한 URL
- 27. 루트 디렉토리를 변경할 때 codeigniter에서 index.php를 제거하는 방법은 무엇입니까?
- 28. codeigniter의 pagiantion에서 화살표를 제거하는 방법
- 29. codeigniter에서 captcha를 만드는 방법 2.1.0
- 30. CodeIgniter에서 특수 문자를 비활성화하는 방법
자동 로딩은 모든 클래스를로드하지 말고 필요한 경우로드합니다. 하지만 다시, CodeIgniter에 대해 알고있는 것은 무엇입니까. – Rufinus
대안이 없으므로 실제 원본 CI 모델을 얻으려면이 작업을 수행해야합니다. 실수로 $ this를 사용하면 텍스트 편집기에 내장 된 replace 함수를 사용하십시오. 응답을 위해 –