2014-03-07 2 views
4

Phil의 철갑 상어 example에 이어 ./application/libraries 폴더에 Public_Controller와 Admin_Controller라는 두 개의 컨트롤러를 만들었습니다.CodeIgniter 자동로드 특정 클래스

내가 뭘 원하는 내가 더 많이 가지고있는 Public_Controller 및 Admin_Controller specificly 자동로드에, 그래서 ./application/config.php

function __autoload($class) { 

    // Autoload only Public_Controller and Admin_Controller 
    if (strpos($class, 'CI_') !== 0) { 
     $file = APPPATH . 'libraries/'. $class .'.php'; 
     if (file_exists($file) && is_file($file)) { 
      @include_once($file); 
     } 
    } 
} 

내 생각이의 문제점 안쪽이 자동로드 기능을 생성 라이브러리 폴더에 포함 된 파일들도 자동으로로드되므로 원하는 것은 아닙니다. 그래서 그 대신 내가 문 경우,이 같은 처음에 작은 변화하려고 노력 : 단지이 두 클래스를 대상으로하기 위해

if (in_array($class, array('Public_Controller, Admin_Controller'))) // instead of strpos 

을,하지만이 작동하지 않습니다. 내가 뭘 잘못했을지 모르는 어떤 아이디어?

답변

0

나는 단지 프론트 엔드에 자동 부하 Public_Controller에 원 및 관리에 Admin_Controller, 그래서 autoload.php 밖으로이다. autoload.php에서 파일은 전역 적으로로드됩니다. __autoload() 함수는 클래스를 호출 할 때 자동로드 만 시도하지만 찾을 수는 없습니다.

+0

그러면 다음과 같이 할 수 있습니다 : 원하는 컨트롤러의 내부에서'$ this-> load-> model ('Model_name'); – Albzi

0

자동로드 기능을 CodeIgniter의를 쓸 필요가 라이브러리 및 도우미 등의 AUO 로딩 파일에 대한 자신의 파일이 없습니다

당신은 특정 배열

거기에 클래스 이름을 추가 할 수 있습니다

파일 이름은 "이어야합니다 autoload.php "응용 프로그램/config/디렉토리

4

applications/config/autoload.php으로 이동하면 필요한 내용을 편집 할 수 있습니다.

그들은 배열에있는 packages, libraries, helpers, config, languagesmodels로 구분. 예를 들어

U가 자동 로딩 특정 파일에 대한 ibuilt의 dunction을 가지고 ..codeiniter 자동로드 기능을 쓸 필요가없는
$autoload['libraries'] = array('database', 'session'); 

$autoload['helper'] = array('url', 'html', 'form'); 
-1

...

애플리케이션/설정/autoload.php THER 유 수로 이동 배열에 특정 파일을 추가하십시오.

$autoload['libraries'] = array('database', 'session','your-specific_file'); 
+0

$ autoload [ 'libraries'] = 배열 ​​('데이터베이스', '세션', '폴더/your-specific_file'); 우리가 이렇게 할 수 있을까? – Angel

+0

autoload는 사용자 정의 라이브러리를 Codeigniter에서 제공하는 라이브러리 폴더에 저장했다고 가정합니다. – Mohan

+0

내 코드가 맞습니까? – Angel

-1

이 방법을 사용할 수 있습니다. __autoload() 다른 클래스를 자동으로로드하십시오. 왜냐하면 PHP 문서에 따르면

__autoload() - 시도하려고하면 undefined 클래스를로드하려고합니다. 클래스 파일은 "include, include_once, require, require_once"함수없이 호출하면 (init) "자동"포함됩니다.

그래서 다른 클래스가 자동으로 걱정할 필요가 없습니다.

또는

당신은

로 CodeIgniter를 내장 자동로드 기능에서 사용할 수 있습니다 응용 프로그램/설정/자동로드를 엽니 다.PHP 파일을 다운로드하고 원하는 항목을 autoload 배열에 추가하십시오. 해당 항목의 각 유형에 해당하는 파일에서 지침을 찾을 수 있습니다. - CodeIgniter의 문서

희망이 도움이 :)

+0

Downvoter가 왜 이것이 다운 투표를했는지 설명 할 수 있다면 다른 사람들에게도 더 명확 할 것입니다 !! – IJas

관련 문제