* * CI 에서 당신 만 의 라 이브 러 리 만 들 기

5617 단어 창설
http://codeigniter.org.cn/user_guide/general/creating_libraries.html
라 이브 러 리 만 들 기
우리 가 용어 '라 이브 러 리' 를 사용 할 때, 우 리 는 일반적으로 libraries 에 있 는 것 을 가리킨다. 폴 더 의 클래스 는 위 키 의 '라 이브 러 리 참조' 판 에서 토론 되 었 습 니 다. 현재 이 화제 에서 우 리 는 어떻게 application/libraries 폴 더 에 클래스 라 이브 러 리 를 만 들 고 전체 프레임 워 크 의 자원 과 분리 합 니 다.
추가 기능 으로서 원본 클래스 에 간단하게 기능 을 추가 해 야 할 때 CodeIgniter 는 클래스 라 이브 러 리 extend 를 사용 할 수 있 습 니 다. 원본 클래스 에서. 응용 프로그램 / libraries 폴 더 에 같은 이름 의 라 이브 러 리 파일 을 설치 하 는 방법 으로 원본 클래스 를 완전히 바 꿀 수도 있 습 니 다.
어쨌든:
  • 새로운 라 이브 러 리 를 만 들 수 있 습 니 다.
  • 원본 라 이브 러 리 를 확장 할 수 있 습 니 다.
  • 원본 라 이브 러 리 를 교체 할 수 있 습 니 다.
  • 아래 페이지 는 이 세 가지 개념 을 깊이 소개 할 것 이다.
    주의: 데이터베이스 클래스 를 제외 하고 확장 되 거나 바 꿀 수 없 으 며, 나머지 클래스 는 모두 가능 합 니 다.
    라 이브 러 리 파일 만 들 기
    라 이브 러 리 파일 은 저장 해 야 합 니 다. application/libraries 폴 더, CodeIgniter 는 이 폴 더 에서 찾 아 초기 화 합 니 다.
    명명 규칙
  • 파일 이름 이니셜 대문자. 예 를 들 어:  Myclass.php
  • 류 성명 이니셜 대문자. 예 를 들 어:  class Myclass
  • 클래스 의 이름과 파일 이름 은 같 아야 합 니 다.
  • 클래스 파일
    모든 종 류 는 기본 원형 이 있어 야 한다. Someclass 이 이름 은 예):<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

    class Someclass {

        public function some_function()
        {
        }
    }

    /* End of file Someclass.php */

    당신 의 종 류 를 사용 하 세 요.
    모든 것 Controller 함수 에서 다음 과 같은 표준 방식 으로 클래스 를 초기 화 할 수 있 습 니 다.$this->load->library('someclass');
    ... 해 야 한다 someclass 파일 이름 일 때 ". php" 확장 자 를 추가 하지 않 아 도 됩 니 다. 여기 이름 은 대소 문 자 를 가리 지 않 습 니 다.
    사용자 정의 클래스 로 딩 이 완료 되면 다음 과 같은 방식 으로 클래스 를 호출 할 수 있 습 니 다. 사용 에 주의 하 십시오. 소문 자 이름:$this->someclass->some_function();  //
    사용자 정의 클래스 를 초기 화 할 때 매개 변 수 를 전달 합 니 다.
    라 이브 러 리 를 초기 화 할 때 두 번 째 매개 변 수 를 통 해 동적 으로 배열 을 클래스 의 구조 함수 로 전달 할 수 있 습 니 다.$params = array('type' => 'large', 'color' => 'red');

    $this->load->library('Someclass', $params);

    이 기능 을 사용 할 때, 클래스 의 구조 함수 에 인 자 를 추가 해 야 합 니 다.<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

    class Someclass {

        public function __construct($params)
        {
            // Do something with $params
        }
    }

    ?>

    설정 파일 에 저 장 된 인 자 를 전달 할 수 있 습 니 다. 간단하게 만 들 고 클래스 파일 이름 이 같은 config 파일 을 저장 합 니 다. application/config/ 폴 더 에 있 습 니 다. 위 에서 말 한 방식 으로 파 라 메 터 를 동적 으로 전달 할 때 config 파일 의 옵션 이 작 동 하지 않 습 니 다.
    사용자 정의 라 이브 러 리 에서 CodeIgniter 자원 초기 화
    사용자 정의 라 이브 러 리 에서 CodeIgniter 의 원본 자원 에 접근 하려 면 사용 해 야 합 니 다. get_instance() 함수. 이 함 수 는 CodeIgniter 슈퍼 개 체 를 되 돌려 줍 니 다.
    일반적으로 컨트롤 러 함수 에서 통과 할 수 있 습 니 다. $this 사용 가능 한 CodeIgniter 함수 호출:$this->load->helper('url');
    $this->load->library('session');
    $this->config->item('base_url');
    //etc.

    $this 는 컨트롤 러, 모델, 보기 에 만 적 용 됩 니 다. 사용자 정의 클래스 에서 CodeIgniter 원본 클래스 를 사용 하려 면 다음 과 같이 할 수 있 습 니 다.
    우선, CodeIgniter 대상 이 변 수 를 부여 하 는 것 을 정의 합 니 다.$CI =& get_instance();
    대상 을 변수 로 정의 하면 그 변수 이름 을 사용 할 수 있 습 니 다. 대체 하 다 $this: $CI =& get_instance();

    $CI->load->helper('url');
    $CI->load->library('session');
    $CI->config->item('base_url');
    //etc.

    주의: getinstance () 이 함 수 는 인 용 된 방식 으로 전 달 됩 니 다: $CI = & getinstance(); 이것 은 매우 중요 하 다. 인용 방식 으로 변 수 를 부여 하면 복사 본 을 만 드 는 대신 원본 CodeIgniter 대상 을 사용 합 니 다.
    너 자신의 클래스 로 원시 클래스 를 교체 해라.
    간단하게 클래스 를 원본 클래스 와 같이 명명 하면 CodeIgniter 에서 이 클래스 를 사용 할 수 있 습 니 다. 이 기능 을 사용 하려 면 파일 이름과 클래스 설명 이 원본 클래스 와 완전히 일치 해 야 합 니 다.예 를 들 어 원본 을 바 꾸 려 면 Email 분류 창고.응용 프로그램 / libraries / Email. php 파일 을 만 들 고 다음 과 같은 방식 으로 클래스 를 설명해 야 합 니 다.class CI_Email {

    }

    대부분의 원시 클래스 는 CI접두사
    표준 불 러 오기 함수 로 만 클래스 를 불 러 올 수 있 습 니 다:$this->load->library('email');
    주의: 이 때 Database 는 사용자 정의 클래스 로 바 꿀 수 없습니다.
    기 존 클래스 확장
    기 존 라 이브 러 리 에 한두 개의 새로운 기능 을 추가 해 야 한다 면 전체 라 이브 러 리 파일 을 교체 할 필요 가 없습니다. 기 존 클래스 를 간단하게 확장 (계승) 하면 클래스 에 예 외 를 추가 하 는 것 과 같 습 니 다.
  • 확 장 된 클래스 는 부모 클래스 에서 확 장 된 클래스 임 을 밝 혀 야 합 니 다.
  • 새로 확 장 된 클래스 가 있 는 파일 은 MY_ 접두사 입 니 다. (이 옵션 은 설정 가능 합 니 다. 아래 설명 이 있 습 니 다)
  • 예 를 들 어 원본 클래스 를 확장 하려 면 Email 클래스 파일 만 들 기 application/libraries/MY_Email. php, 다음 과 같은 방식 으로 파일 에 설명 합 니 다.class MY_Email extends CI_Email {

    }

    메모: 클래스 에서 구조 함 수 를 사용 해 야 한다 면 구조 함수 에서 부모 구조 함 수 를 명시 적 으로 계승 해 야 합 니 다.class MY_Email extends CI_Email {

        public function __construct()
        {
            parent::__construct();
        }
    }

    하위 클래스 불 러 오기
    확장 하위 클래스 를 불 러 오 려 면 표준 문자 이름 을 사용 해 야 합 니 다. 접 두 사 를 사용 하지 마 십시오. 예 를 들 어 앞에서 말 한 email 확장 하위 클래스 를 불 러 오 려 면 이렇게 써 야 합 니 다.$this->load->library('email');
    확장 하위 클래스 가 불 러 오 면 일반 클래스 처럼 사용 할 수 있 습 니 다. Email 클래스 의 모든 함수 가 호출 될 수 있 습 니 다.$this->email->some_function();
    사용자 정의 접두사 설정
    하위 클래스 접 두 사 를 설정 하려 면 열 어 주 십시오. application/config/config.php 파일 을 찾 고 이 항목 을 찾 습 니 다:$config['subclass_prefix'] = 'MY_';
    모든 원본 CodeIgniter 라 이브 러 리 를 주의 하 십시오. CI_ 접두사 로 서 CI 를 사용 하지 마 십시오.당신 의 접두사 로...

    좋은 웹페이지 즐겨찾기