CI 프레임워크를 사용하는 간단한 방법
풀어 주다: 2016-07-28 08:28:57
-
코드이그나이터프레임워크
-
-
1, 추억 MVC
-
-
1.1, M: 모델, 데이터 제공, 데이터 저장
-
1.2, V: 보기, 디스플레이만 담당 , Formform
-
1.3, C: 컨트롤러, 좌표 모델 및 뷰
-
1.4, action: Action은 브라우저에서 요청하는 컨트롤러의 메서드입니다
-
-
2, CI MVC
-
CI소개: CodeIgniter는 가볍지만 강력한 php입니다. 프레임워크는 MVC의 디자인 패턴을 기반으로 합니다.풍부한 클래스 라이브러리 세트 제공
-
-
2.1, url 액세스 사용된 pathinfo
-
2.2, 형식: 항목 파일/컨트롤러/액션(기본값pathinfo 형식)
-
2.3, application 디렉토리:
-
-
컨트롤러컨트롤러
-
모델모델
-
뷰뷰
-
-
2.4, 기본 컨트롤러는 환영합니다
-
2.5이며 기본 동작은 index
-
입니다. 2.6, 파일명 모두 소문자
-
-
3, 컨트롤러(controller ):
-
3.1, 접미사를 추가할 필요 없이 클래스 이름만 . php
-
3.2, 파일 이름은 모두 소문자입니다(예: user. php (대문자 파일 이름은 브라우저에서 지원되지 않음)
- 3.3, 모든 컨트롤러는 CI_Controller 클래스, 클래스 이름의 첫 글자는 대문자
3.4-
, 메서드 이름은 대소문자를 구분하지 않습니다
작업 요구사항: -
1. 은 public으로 시작해야 합니다.
2.-
밑줄은 칠 수 없습니다. (_) 시작
주목!메소드 이름이 클래스 이름과 동일하면 php (__construct)-
- 4, 보기(보기)
-
- 4.1, 컨트롤러에서 뷰 로드: $this -> 로드->보기(“user_add”); //No 확장 추가
- 4.2, 컨트롤러에서 뷰 로드: $this-> 로드->보기(“사용자/ 추가”);//내선 번호 없음
- 참고: 전화할 수 있습니다 $ 이거->로드->보기(보기);
4.3-
뷰에서는 네이티브 php 코드
4.4를 직접 사용합니다. -
, 컨트롤에서 컨테이너에 변수 할당: $this->load->vars("보기의 변수 이름", php 변수 이름);
예: -
$str="abcdefg" ;
$this-
->로드->vars (" str",$str);
에 사용됨 보기: - php echo $str;?>
4.5-
, 컨트롤러에 여러 변수 할당:
예: - $str="abcd";
$list -
= 배열(“id” =>”1”,” 이름”=>”장산”,”비밀번호”=>”1234”);
$data-
[“ str”]= $str;
$data-
["목록 ”]= $list;
$this-
->load->vars($ 데이터);
4.6-
, CI프레임워크가 스스로 해결합니다PHP의 짧은 태그=…?>
4.7-
, 권장 사용: phpforeach( $listas $key=>$val):?>…php endforeach;?>
- 5
-
, 슈퍼 개체: 현재 컨트롤러 개체 다양한 속성 제공
5.1-
, $this- >로드속성
5.1-
.1, 로더 클래스 인스턴스 system/core/Loader.php
5.1-
.2, CI_ 로더 제공 방법:
$this-
->load->보기()보기 로드 중
$this-
->load ->vars()볼 변수 할당
$this -
-> ;load->database()Load 데이터베이스 작업 개체
$this-
->load->모델()모델 객체 로드
$this-
->로드- > 도우미()도우미 개체
$this-
->로드 ->뷰("뷰 이름",$변수 이름)뷰 로드 시 변수 할당
5.2-
, $ this-> ;uri속성
-
5.2.1, 로더 클래스 인스턴스 시스템/ 코어/URI.php
-
5.2 .2, CI_URI 제공되는 메소드:
-
$this ->우리->세그먼트(n)은 URL 🎜>에서 n 매개변수
1을 나타내고, 액션은 2을 나타내며, 값은 1 을 나타냅니다. 3, 2 값은 4… 을 나타냅니다. - 사용법1: 항목 파일/컨트롤러/액션/값1/값2
- echo $this->uri->세그먼트(3);//출력값 1
- 사용량2:색인.php/controllers/actions/6
- //직접 얻을 수 있습니다. 매개변수는 올바르게 일치해야 합니다.
- 공개함수($id=0){
- echo $id ; //출력 6
- }
-
-
5.3, $this->입력속성
-
5.3.1, 로더 클래스 인스턴스 시스템/코어/입력. php
-
5.3.2, CI_Input 제공 방법:
-
-
$this->입력 -> ;게시물('사용자 이름');//$_POST["사용자 이름"]
-
$this->입력->서버 (“DOCUMENT_ROOT”);//$_SERVER[“DOCUMENT_ROOT”]
-
$this ->입력->서버(“REMOTE_ADDR ”);//클라이언트 IP
-
$this->입력- >서버(“SERVER_ADDR”);//서버 IP
-
참고: 뷰에서 $this를 직접 사용하여 상위 개체
-
- 6, 데이터베이스 접속
-
- 6.1, 구성 파일을 수정합니다: application/config/database . php
- 6.2, 데이터베이스 작업 클래스 로드: $this-> 🎜>로드->데이터베이스();
로드에 성공하면 슈퍼 개체의 속성에서 기본 속성 이름은 -
db
$this-
->db입니다.
6.3-
, $query=$this- > db->쿼리($sql); //반환값은 객체(array_fetch_object)
$sql -
= $this ->db->last_query($sql);//마지막으로 실행한 SQL 문 표시
6.3-
.1, $query= $this->db->escape();//이 함수는 데이터 유형과 이스케이프 문자열 유형 데이터를 결정합니다
6.4-
, $list= $query->결과();//배열을 반환합니다. 배열에는 개체가 하나씩 포함됩니다.
6.5-
, $list = $query->result_array();//2차원 배열을 반환합니다. Array 내부 연결 포함
6.6-
, $row= $query ->행();//직접 객체인 첫 번째 데이터 조각을 반환합니다
6.7 -
, $row= $query-> row_array();//첫 번째 데이터인 배열 반환
6.8-
, $count = $query->행 개수(); //결과 반환 설정된 행 수
6.9-
, $field= $query ->num_fields();//요청된 필드 수 반환
6.10-
,$count= $query->affected_rows ();//영향을 받은 행 수 반환
6.11-
, $id= $query->insert_id();/ /자동 증가 ID 반환
7-
, 데이터베이스 구성
7.1-
, 애플리케이션에서 db:
-
자동 로드 >/config/autoload.php의 구성:
-
$autoload["라이브러리"]= 배열("데이터베이스");
-
이렇게 하면 $this- >로드->데이터베이스();
-
- 7.2, 매개변수 바인딩
- $name = $this -> ;입력->게시물(“이름”);
- $pwd =$this->입력- >게시물(“비밀번호”);
- //사용 묶을 물음표 정의된 매개변수
- $data[0]= $name;
- $data[1] = $pwd;//2차원 배열을 사용하여 값 전달
- $sql =“삽입 ci_user(name, pwd) 값 (?,?)”;//여러 개의 물음표, 인덱스를 전달해야 함 배열
- $bool = $this- >db->쿼리($sql, $data); //반환 값은 부울입니다
- 7.3, 테이블 접두사 구성
- 애플리케이션/config/데이터베이스 .php 구성:
- $db['기본값']['dbprefix']='ci_';
- $db['기본값']['swap_pre']= 'ci_';
- 구성은 다음과 같습니다. 코드에서도 테이블 접두사 뒤에 이름을 직접 쓰면 됩니다. 나중에 프로젝트 테이블 접두사가 변경되면 $db['기본값']['dbprefix']='new_', 코드 ci_는 자동으로 new_
로 대체됩니다. 8-
, 데이터베이스 운영( AR 모델)
8.1-
, 구성애플리케이션/ cinfig/데이터베이스 .php中
$active_record -
= TRUE;
8.2-
, 구성 파일에서 테이블 접두사를 구성한 후
8.3-
, 검색(get)이 자동으로 추가됩니다:
$res -
= $ this->db-> ;get('테이블 이름');//결과 집합 개체 반환
$list - = $res-> result();//배열을 반환합니다. 배열에 하나씩 객체입니다
$list -
= $res->result_array ();//2를 반환합니다. - 연관 배열인 차원 배열
8.4-
, insert(insert):
//데이터는 연관 배열을 사용합니다 $data-
["데이터베이스 필드 이름"]= 값 //$this->input->post("name");
$data-
["데이터베이스 필드 이름"]= 값;
$res -
= $ this->db->insert ("데이터 테이블 이름",$data);//결과 boolean 반환;
8.5-
, 수정(업데이트):
//데이터는 연관 배열을 사용합니다 $data-
[ "데이터베이스 필드 이름"]= value //$this-> ;input->post("name");
$data-
["데이터베이스 필드 이름"]= 값 ”=>”4
- ”);
-
$res = $this->db->업데이트("데이터 테이블 이름",$data,$where);//결과 부울 반환;
-
8.6, 삭제(삭제):
-
$where = 배열(“id” => ;"4");
-
$res = $this ->db->dalete("데이터 테이블 이름", $where );//결과 반환 boolean;
-
-
9, AR 지속운영
-
-
9.1, $res=$this->db->선택("id,name")//검색 필드
- ->from("user")//데이터 테이블 이름
-
->어디("id
>",3)//조건
id와 >
-
->order_by("id 사이에 공백이 있어야 합니다.
desc")//정렬
-
->제한( 3,1)//페이지 나누기는 1개 항목을 건너뛰고 3개 항목을 가져오는 것을 의미하며 이는 tp와 반대입니다.
-
->가져오기();//데이터 가져오기
- $list = $res->result_array();
-
9.2, where() 조건
- 조건 기호: “>” , “ >=", "<", "<=", "=", "!="; 조건을 지정하지 않으면 기본값은 "="
- <🎜입니다. >1 , 조건이 하나만 있는 경우:
- 9.2.1 , $ res= $this->db->where("필드","값")->get();
- 예: $res= $this->db ->어디(“이름”,”관리자”)- >get ();//"="가 자동으로 추가됩니다
- 9.2. 2, $res=$this->db ->어디("필드=","value")-> get();
- 예: $res= $ 이거-> db->어디(“이름=”,”admin”)->get();// 공백
- 2이 있어야 하며 조건이 여러 개인 경우 배열()
9.2-
.3, $res= $this- >db->어디(배열("필드" = >"값","필드"=>"값"))->get( );
예: -
$res= $this->db->어디(배열(“ 이름” => "관리자","ID>3”=>”2”))->get( );
9.2-
.4, 복잡한 쿼리 문에서는 $this-> db->쿼리($sql,$data );//물음표를 사용하여 매개변수 바인딩 9.3
- , 가입연결 쿼리
-
9.3.1, 기본값은 왼쪽 쿼리(왼쪽)입니다.
가입 … >db->선택
("필드")-
-> from("데이터 테이블 이름")->
join-
(' 조인 테이블 ',
'조인 조건'-
)->get(); //기본값은 왼쪽 쿼리입니다(왼쪽
...에 가입)
-
예: $this->db->선택
(“*”)-
-> ("사용자")
-
->가입( '카테고리',
사용자-
.ID=카테고리 .id)//기본값은 왼쪽 쿼리(왼쪽
Join )->get(); 9.3.2. 선택적 매개변수는 연결을 선택합니다. 왼쪽, 오른쪽, 외부, 내부, 왼쪽 외부, 오른쪽 외부
예: $this->db->select(“*”)
- ->from(“사용자”)
- -> ;join("category", "user.id = Category.id","left")//세 번째 매개변수로 지정
-
->get();
- 10. 확장 CI 컨트롤러
-
- 10.1. 확장 CI 컨트롤러
- 1. 애플리케이션/코어에 새 컨트롤러(MY_Controller)를 만듭니다. 새 컨트롤러는 CI_Controller 클래스를 상속하며 생성한 컨트롤러에서 확장할 수 있습니다.
- 예: class MY_Controller 확장 CI_Controller{
- 공용 함수 __consreuct(){
- Parent ::__construct(); //부모 클래스의 생성자 메소드 호출
- //로그인 확인
- //권한 확인
- }
- }
- 2. Welcome.php가 생성한 컨트롤러를 상속받게 합니다(MY_Controller ), CI_Controller를 간접적으로 상속합니다.
- 3. 컨트롤러 접두사는 수정할 수 있습니다.
- application/config/config.php에서 수정하세요.
-
$config['subclass_prefix'] = 'MY_';
- 11. 모델
- 11.1. 모델 파일 이름: user_model.php, Category_model.php, 파일 이름은 소문자
- 권장사항: 컨트롤러 클래스 이름과의 충돌을 방지하려면 모델 파일 이름에 _model을 접미사로 사용하세요!
- 11.2. 모든 모델은 CI_Model 클래스에서 직접 또는 간접적으로 상속됩니다.
- 11.3. 필수 메소드: getAll()…
- 11.4. 컨트롤러에 모델 로드: $this->load->model("모델 파일 이름") //접미사 없음
-
11.5. 컨트롤러에서 모델을 로드할 때 별칭: $this->load->model("model file name", "alias");
- 로드가 성공적으로 완료되면 상위 객체의 속성에 배치됩니다. 기본 속성 이름은 모델 파일 이름 또는 별칭입니다.
- 11.6. 컨트롤러에서 모델을 호출하여 데이터를 얻습니다. :$this->모델 파일 이름->메서드 이름();
- 예: $this->load-> model("User_model"); //참고 사례
- $this->User_model->getAll() //모델 호출 및 데이터 가져오기
- 11.6.1, 컨트롤러에서 모델을 호출하여 데이터를 가져옵니다. $this->alias->method name();
- 예: $this->load->model("User_model ","user"); //대문자 사용에 주의하세요
- $this->user->getAll() ; //모델 호출 및 데이터 가져오기
12. CI의 URL 관련 함수 12.1. >load->helper("url");-
자동 로딩 도우미 기능 구성: $autoload['- helper'] = array('url');$this->load-> helper("url");
- 헬퍼 기능:
- 쓸 필요가 없습니다. site_url("Controller/Action/Parameter"); //
- 를 처리합니다. )?>
- base_url () // 웹사이트의 루트 디렉터리로 돌아갑니다("ci/")
- 13 . CI의 라우팅 및 의사 정적, index.php 항목 파일 숨기기
- 13.1 라우팅 설정
-
- application/config/routes.php에서 설정/수정:
-
- $route['
default_controller-
'] = "welcome"; //default 컨트롤러를 환영합니다
- 13.2, pseudo- application/config/의 정적 설정
- Routes.php의 설정/수정:
-
//정규 일치(컨트롤러/)
- $route['
뉴스-
/[d]{6 }/([dw]+).html']
= '사용자/표시/$1';http://localhost/CI/index.php/news/201401/caolizhi66.html
- 액션 뉴스의 매개변수를 user/show/로 라우팅합니다. $1
-
- 13.3.숨겨진 항목 파일 index.php
- 13.3.1. Apache 구성 파일: LoadModule rewrite_module modules/mod_rewrite.so
- 13.3.2 항목 파일 통계 디렉터리에서 다음 내용으로 .htaccess 파일을 만듭니다.
-
- RewriteEngine on //의사 정적 활성화
- RewriteCond %{REQUEST_FILENAME} !- d //존재하지 않는 디렉터리 일치
- RewriteCond %{REQUEST_FILENAME} !-f //존재하지 않는 파일 일치
- RewriteRule ^( .*)$ index.php/$1 [QSA,PT,L] //규칙 다시 작성
-
-
- 이렇게 하면 index.php 항목 파일을 작성할 필요가 없습니다.
-
- 14. CI 페이지 매김
- $this->load->library('페이지 매김
- ');1 $config['base_url
- '] = $url;2 /* 페이징을 위한 기본 URL
- 3 a와 b의 링크 형식을 사용하려면 URL이 /news/page/
4 링크가 /news 형식의 c, d인 경우 5 */ 6 $config['- total_rows
'] = $total;//총 레코드 수, 이에 대해서는 말할 것도 없고 데이터베이스에서 얻은 총 레코드 수입니다 -
7 $config[' per_page
'] = $pagesize; //페이지당 항목 수.글쎄, 이것에 대해서는 할 말이 많지 않습니다. . 직접 설정하세요. 기본값은 10입니다. -
8 $config['page_query_string'] = TRUE;
-
9 /* 매개변수 전달 형식. true를 켜면 URL 뒤에 &per_page=3이 자동으로 추가됩니다. (이 per_page는 기본 쿼리 문자입니다. 물론 $config['query_string_segment']를 사용하여 직접 설정할 수도 있습니다)
- 10 따라서 c와 d의 형식은 일반적으로 localhost/news?&per_page=2이지만 동일하며 아무런 영향을 미치지 않습니다. get의 per_page는 여전히 3
- 11 */
-
12 $config['first_link '] = '홈페이지';
// 첫 번째 페이지는
- 13 $config['last_link'] = '마지막 페이지';
// 마지막 페이지 표시
- 14 $config['next_link'] = '다음 페이지>';
// 다음 페이지에는
- 15 $config['prev_link'] = '<<🎜가 표시됩니다. >이전 페이지';
// 이전 페이지 표시
16 $config['- cur_tag_open'] = '< aclass="현재">';
// 현재 페이지 시작 스타일
17 $config['-
cur_tag_close'] = '< ;/아>';
18 /-
* 현재 페이지의 끝 스타일입니다. 직접 시도해 볼 수 있습니다.
- 19예를 들어 현재 페이지의 페이징 번호 스타일을 빨간색 글꼴 등으로 더 보기 좋게 만들고 싶습니다. 현재 🎜>에 css코드
*/21 $config['-
링크 수 ']
= 2;//현재 연결 전후에 표시되는 페이지 번호입니다. 이는 현재 페이지가 5페이지이고 3, 4을 볼 수 있음을 의미합니다. , 5, 6, 7페이지입니다.
22-
$config[' uri_segment']=4;23
- /*링크 스타일 a), b)를 사용할 때 페이지 수를 결정하는 데 사용됩니다.
24 예를 들어 localhost/news/page/3의 uri_segment는 3으로 설정되어야 합니다. localhost/news/title/page/3 4 25로 설정해야 합니다. */ 26-
$config['use_page_numbers ']= 참;
27 -
/*a)와 b)의 차이입니다. 켜져 있으면 페이지에 페이지 수가 표시됩니다. false는 레코드 수를 나타냅니다.
위 내용은 내용적인 측면을 포함하여 CI 프레임워크의 간단한 사용법을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31