> 백엔드 개발 > PHP 튜토리얼 > CI 프레임워크를 사용하는 간단한 방법

CI 프레임워크를 사용하는 간단한 방법

WBOY
풀어 주다: 2016-07-28 08:28:57
원래의
1465명이 탐색했습니다.
  1. 코드이그나이터프레임워크
  2. 1, 추억 MVC
  3. 1.1, M: 모델, 데이터 제공, 데이터 저장
  4. 1.2, V: 보기, 디스플레이만 담당 , Formform
  5. 1.3, C: 컨트롤러, 좌표 모델 및 뷰
  6. 1.4, action: Action은 브라우저에서 요청하는 컨트롤러의 메서드입니다
  7. 2, CI MVC
  8. CI소개: CodeIgniter는 가볍지만 강력한 php입니다. 프레임워크는 MVC의 디자인 패턴을 기반으로 합니다.풍부한 클래스 라이브러리 세트 제공
  9. 2.1, url 액세스 사용된 pathinfo
  10. 2.2, 형식: 항목 파일/컨트롤러/액션(기본값pathinfo 형식)
  11. 2.3, application 디렉토리:
  12. 컨트롤러컨트롤러
  13. 모델모델
  14. 2.4, 기본 컨트롤러는 환영합니다
  15. 2.5이며 기본 동작은 index
  16. 입니다. 2.6, 파일명 모두 소문자
  17. 3, 컨트롤러(controller ):
  18. 3.1, 접미사를 추가할 필요 없이 클래스 이름만 . php
  19. 3.2, 파일 이름은 모두 소문자입니다(예: user. php (대문자 파일 이름은 브라우저에서 지원되지 않음)
  20. 3.3, 모든 컨트롤러는 CI_Controller 클래스, 클래스 이름의 첫 글자는 대문자
  21. 3.4
  22. , 메서드 이름은 대소문자를 구분하지 않습니다
  23. 작업 요구사항:
  24. 1. public으로 시작해야 합니다.
  25. 2.
  26. 밑줄은 칠 수 없습니다. (_) 시작
  27. 주목!메소드 이름이 클래스 이름과 동일하면 php (__construct)
  28. 4, 보기(보기)
  29. 4.1, 컨트롤러에서 뷰 로드: $this -> 로드->보기(“user_add”); //No 확장 추가
  30. 4.2, 컨트롤러에서 뷰 로드: $this-> 로드->보기(“사용자/ 추가”);//내선 번호 없음
  31. 참고: 전화할 수 있습니다 $ 이거->로드->보기(보기);
  32. 4.3
  33. 뷰에서는 네이티브 php 코드
  34. 4.4를 직접 사용합니다.
  35. , 컨트롤에서 컨테이너에 변수 할당: $this->load->vars("보기의 변수 이름", php 변수 이름);
  36. 예:
  37. $str="abcdefg" ;
  38. $this
  39. ->로드->vars (" str",$str);
  40. 에 사용됨 보기: php echo $str;?>
  41. 4.5
  42. , 컨트롤러에 여러 변수 할당:
  43. 예:
  44. $str="abcd";
  45. $list
  46. = 배열(“id” =>”1”,” 이름”=>”장산”,”비밀번호”=>”1234”);
  47. $data
  48. [“ str”]= $str;
  49. $data
  50. ["목록 ”]= $list;
  51. $this
  52. ->load->vars($ 데이터);
  53. 4.6
  54. , CI프레임워크가 스스로 해결합니다PHP의 짧은 태그?>
  55. 4.7
  56. , 권장 사용: phpforeach( $listas $key=>$val):?>…php endforeach;?>
  57. 5
  58. , 슈퍼 개체: 현재 컨트롤러 개체 다양한 속성 제공
  59. 5.1
  60. , $this- >로드속성
  61. 5.1
  62. .1, 로더 클래스 인스턴스 system/core/Loader.php
  63. 5.1
  64. .2, CI_ 로더 제공 방법:
  65. $this
  66. ->load->보기()보기 로드 중
  67. $this
  68. ->load ->vars()볼 변수 할당
  69. $this
  70. -> ;load->database()Load 데이터베이스 작업 개체
  71. $this
  72. ->load->모델()모델 객체 로드
  73. $this
  74. ->로드- > 도우미()도우미 개체
  75. $this
  76. ->로드 ->("뷰 이름",$변수 이름)뷰 로드 시 변수 할당
  77. 5.2
  78. , $ this-> ;uri속성
  79. 5.2.1, 로더 클래스 인스턴스 시스템/ 코어/URI.php
  80. 5.2 .2, CI_URI 제공되는 메소드:
  81. $this ->우리->세그먼트(n)URL 🎜>에서 n 매개변수
  82. 1을 나타내고, 액션은 2을 나타내며, 값은 1 을 나타냅니다. 3, 2 값은 4
  83. 을 나타냅니다.
  84. 사용법1: 항목 파일/컨트롤러/액션/값1/값2
  85. echo $this->uri->세그먼트(3);//출력값 1
  86. 사용량2:색인.php/controllers/actions/6
  87. //직접 얻을 수 있습니다. 매개변수는 올바르게 일치해야 합니다.
  88. 공개함수($id=0){
  89. echo $id ; //출력 6
  90. }
  91. 5.3, $this->입력속성
  92. 5.3.1, 로더 클래스 인스턴스 시스템/코어/입력. php
  93. 5.3.2, CI_Input 제공 방법:
  94. $this->입력 -> ;게시물('사용자 이름');//$_POST["사용자 이름"]
  95. $this->입력->서버 (“DOCUMENT_ROOT”);//$_SERVER[“DOCUMENT_ROOT”]
  96. $this ->입력->서버(“REMOTE_ADDR ”);//클라이언트 IP
  97. $this->입력- >서버(“SERVER_ADDR”);//서버 IP
  98. 참고: 뷰에서 $this를 직접 사용하여 상위 개체
  99. 6, 데이터베이스 접속
  100. 6.1, 구성 파일을 수정합니다: application/config/database . php
  101. 6.2, 데이터베이스 작업 클래스 로드: $this-> 🎜>로드->데이터베이스();
  102. 로드에 성공하면 슈퍼 개체의 속성에서 기본 속성 이름은
  103. db
  104. $this
  105. ->db입니다.
  106. 6.3
  107. , $query=$this- > db->쿼리($sql); //반환값은 객체(array_fetch_object)
  108. $sql
  109. = $this ->db->last_query($sql);//마지막으로 실행한 SQL 문 표시
  110. 6.3
  111. .1, $query= $this->db->escape();//이 함수는 데이터 유형과 이스케이프 문자열 유형 데이터를 결정합니다
  112. 6.4
  113. , $list= $query->결과();//배열을 반환합니다. 배열에는 개체가 하나씩 포함됩니다.
  114. 6.5
  115. , $list = $query->result_array();//2차원 배열을 반환합니다. Array 내부 연결 포함
  116. 6.6
  117. , $row= $query ->();//직접 객체인 첫 번째 데이터 조각을 반환합니다
  118. 6.7
  119. , $row= $query-> row_array();//첫 번째 데이터인 배열 반환
  120. 6.8
  121. , $count = $query->행 개수(); //결과 반환 설정된 행 수
  122. 6.9
  123. , $field= $query ->num_fields();//요청된 필드 수 반환
  124. 6.10
  125. ,$count= $query->affected_rows ();//영향을 받은 행 수 반환
  126. 6.11
  127. , $id= $query->insert_id();/ /자동 증가 ID 반환
  128. 7
  129. , 데이터베이스 구성
  130. 7.1
  131. , 애플리케이션에서 db:
  132. 자동 로드 >/config/autoload.php의 구성:
  133. $autoload["라이브러리"]= 배열("데이터베이스");
  134. 이렇게 하면 $this- >로드->데이터베이스();
  135. 7.2, 매개변수 바인딩
  136. $name = $this -> ;입력->게시물(“이름”);
  137. $pwd =$this->입력- >게시물(“비밀번호”);
  138. //사용 묶을 물음표 정의된 매개변수
  139. $data[0]= $name;
  140. $data[1] = $pwd;//2차원 배열을 사용하여 값 전달 ​​
  141. $sql =삽입 ci_user(name, pwd) 값 ​​(?,?)”;//여러 개의 물음표, 인덱스를 전달해야 함 배열
  142. $bool = $this- >db->쿼리($sql, $data); //반환 값은 부울입니다
  143. 7.3, 테이블 접두사 구성
  144. 애플리케이션/config/데이터베이스 .php 구성:
  145. $db['기본값']['dbprefix']='ci_';
  146. $db['기본값']['swap_pre']= 'ci_';
  147. 구성은 다음과 같습니다. 코드에서도 테이블 접두사 뒤에 이름을 직접 쓰면 됩니다. 나중에 프로젝트 테이블 접두사가 변경되면 $db['기본값']['dbprefix']='new_', 코드 ci_는 자동으로 new_
  148. 로 대체됩니다.
  149. 8
  150. , 데이터베이스 운영( AR 모델)
  151. 8.1
  152. , 구성애플리케이션/ cinfig/데이터베이스 .php
  153. $active_record
  154. = TRUE;
  155. 8.2
  156. , 구성 파일에서 테이블 접두사를 구성한 후
  157. 8.3
  158. , 검색(get)이 자동으로 추가됩니다:
  159. $res
  160. = $ this->db-> ;get('테이블 이름');//결과 집합 개체 반환
  161. $list
  162. = $res-> result();//배열을 반환합니다. 배열에 하나씩 객체입니다
  163. $list
  164. = $res->result_array ();//2를 반환합니다. - 연관 배열인 차원 배열
  165. 8.4
  166. , insert(insert):
  167. //데이터는 연관 배열을 사용합니다
  168. $data
  169. ["데이터베이스 필드 이름"]=//$this->input->post("name");
  170. $data
  171. ["데이터베이스 필드 이름"]= 값;
  172. $res
  173. = $ this->db->insert ("데이터 테이블 이름",$data);//결과 boolean 반환;
  174. 8.5
  175. , 수정(업데이트):
  176. //데이터는 연관 배열을 사용합니다
  177. $data
  178. [ "데이터베이스 필드 이름"]= value //$this-> ;input->post("name");
  179. $data
  180. ["데이터베이스 필드 이름"]=”=>”4
  181. ”);
  182. $res = $this->db->업데이트("데이터 테이블 이름",$data,$where);//결과 부울 반환;
  183. 8.6, 삭제(삭제):
  184. $where = 배열(“id” => ;"4");
  185. $res = $this ->db->dalete("데이터 테이블 이름", $where );//결과 반환 boolean;
  186. 9, AR 지속운영
  187. 9.1, $res=$this->db->선택("id,name")//검색 필드
  188. ->from("user")//데이터 테이블 이름
  189. ->어디("id >",3)//조건 id와 >
  190. ->order_by("id 사이에 공백이 있어야 합니다. desc")//정렬
  191. ->제한( 3,1)//페이지 나누기는 1개 항목을 건너뛰고 3개 항목을 가져오는 것을 의미하며 이는 tp와 반대입니다.
  192. ->가져오기();//데이터 가져오기
  193. $list = $res->result_array();
  194. 9.2, where() 조건
  195. 조건 기호: “>” , “ >=", "<", "<=", "=", "!="; 조건을 지정하지 않으면 기본값은 "="
  196. <🎜입니다. >1 , 조건이 하나만 있는 경우:
  197. 9.2.1 , $ res= $this->db->where("필드","값")->get();
  198. 예: $res= $this->db ->어디(“이름”,”관리자”)- >get ();//"="가 자동으로 추가됩니다
  199. 9.2. 2, $res=$this->db ->어디("필드=","value")-> get();
  200. 예: $res= $ 이거-> db->어디(“이름=”,”admin”)->get();// 공백
  201. 2이 있어야 하며 조건이 여러 개인 경우 배열()
  202. 9.2
  203. .3, $res= $this- >db->어디(배열("필드" = >"값","필드"=>"값"))->get( );
  204. 예:
  205. $res= $this->db->어디(배열(“ 이름” => "관리자","ID>3”=>”2”))->get( );
  206. 9.2
  207. .4, 복잡한 쿼리 문에서는 $this-> db->쿼리($sql,$data );//물음표를 사용하여 매개변수 바인딩 9.3
  208. , 가입연결 쿼리
  209. 9.3.1, 기본값은 왼쪽 쿼리(왼쪽)입니다. 가입 … >db->선택
  210. ("필드")
  211. -> from("데이터 테이블 이름")->
  212. join
  213. (' 조인 테이블 ',
  214. '조인 조건'
  215. )->get(); //기본값은 왼쪽 쿼리입니다(왼쪽 ...에 가입)
  216. 예: $this->db->선택
  217. (“*”)
  218. -> ("사용자")
  219. ->가입( '카테고리',
  220. 사용자
  221. .ID=카테고리 .id)//기본값은 왼쪽 쿼리(왼쪽 Join )->get(); 9.3.2. 선택적 매개변수는 연결을 선택합니다. 왼쪽, 오른쪽, 외부, 내부, 왼쪽 외부, 오른쪽 외부
  222. 예:
  223. $this->db->select(“*”)
  1. ->from(“사용자”)
  2. -> ;join("category", "user.id = Category.id","left")//세 번째 매개변수로 지정
  3. ->get();
  4. 10. 확장 CI 컨트롤러
  5. 10.1. 확장 CI 컨트롤러
  6. 1. 애플리케이션/코어에 새 컨트롤러(MY_Controller)를 만듭니다. 새 컨트롤러는 CI_Controller 클래스를 상속하며 생성한 컨트롤러에서 확장할 수 있습니다.
  7. 예: class MY_Controller 확장 CI_Controller{
  8. 공용 함수 __consreuct(){
  9. Parent ::__construct(); //부모 클래스의 생성자 메소드 호출
  10. //로그인 확인
  11. //권한 확인
  12. }
  13. }
  14. 2. Welcome.php가 생성한 컨트롤러를 상속받게 합니다(MY_Controller ), CI_Controller를 간접적으로 상속합니다.
  15. 3. 컨트롤러 접두사는 수정할 수 있습니다.
  16. application/config/config.php에서 수정하세요.
  17. $config['subclass_prefix'] = 'MY_';
  18. 11. 모델
  19. 11.1. 모델 파일 이름: user_model.php, Category_model.php, 파일 이름은 소문자
  20. 권장사항: 컨트롤러 클래스 이름과의 충돌을 방지하려면 모델 파일 이름에 _model을 접미사로 사용하세요!
  21. 11.2. 모든 모델은 CI_Model 클래스에서 직접 또는 간접적으로 상속됩니다.
  22. 11.3. 필수 메소드: getAll()…
  23. 11.4. 컨트롤러에 모델 로드: $this->load->model("모델 파일 이름") //접미사 없음
  24. 11.5. 컨트롤러에서 모델을 로드할 때 별칭: $this->load->model("model file name", "alias");
  25. 로드가 성공적으로 완료되면 상위 객체의 속성에 배치됩니다. 기본 속성 이름은 모델 파일 이름 또는 별칭입니다.
  26. 11.6. 컨트롤러에서 모델을 호출하여 데이터를 얻습니다. :$this->모델 파일 이름->메서드 이름();
  27. 예: $this->load-> model("User_model"); //참고 사례
  28. $this->User_model->getAll() //모델 호출 및 데이터 가져오기
  29. 11.6.1, 컨트롤러에서 모델을 호출하여 데이터를 가져옵니다. $this->alias->method name();
  30. 예: $this->load->model("User_model ","user"); //대문자 사용에 주의하세요
  31. $this->user->getAll() ; //모델 호출 및 데이터 가져오기
  32. 12. CI의 URL 관련 함수
  33. 12.1. >load->helper("url");
  34. 자동 로딩 도우미 기능 구성:
  35. $autoload['
  36. helper'] = array('url');$this->load-> helper("url");
  37. 헬퍼 기능:
  38. 쓸 필요가 없습니다. site_url("Controller/Action/Parameter"); //
  39. 를 처리합니다. )?>
  40. base_url () // 웹사이트의 루트 디렉터리로 돌아갑니다("ci/")
  41. 13 . CI의 라우팅 및 의사 정적, index.php 항목 파일 숨기기
  42. 13.1 라우팅 설정
  43. application/config/routes.php에서 설정/수정:
  44. $route['
  45. default_controller
  46. '] = "welcome"; //default 컨트롤러를 환영합니다
  47. 13.2, pseudo- application/config/의 정적 설정
  48. Routes.php의 설정/수정:
  49. //정규 일치(컨트롤러/)
  50. $route['
  51. 뉴스
  52. /[d]{6 }/([dw]+).html'] = '사용자/표시/$1';http://localhost/CI/index.php/news/201401/caolizhi66.html
  53. 액션 뉴스의 매개변수를 user/show/로 라우팅합니다. $1
  54. 13.3.숨겨진 항목 파일 index.php
  55. 13.3.1. Apache 구성 파일: LoadModule rewrite_module modules/mod_rewrite.so
  56. 13.3.2 항목 파일 통계 디렉터리에서 다음 내용으로 .htaccess 파일을 만듭니다.
  57. RewriteEngine on //의사 정적 활성화
  58. RewriteCond %{REQUEST_FILENAME} !- d //존재하지 않는 디렉터리 일치
  59. RewriteCond %{REQUEST_FILENAME} !-f //존재하지 않는 파일 일치
  60. RewriteRule ^( .*)$ index.php/$1 [QSA,PT,L] //규칙 다시 작성
  61. 이렇게 하면 index.php 항목 파일을 작성할 필요가 없습니다.
  62. 14. CI 페이지 매김
  63. $this->load->library('페이지 매김
  64. ');1 $config['base_url
  65. '] = $url;2 /* 페이징을 위한 기본 URL
  66. 3 a와 b의 링크 형식을 사용하려면 URL이 /news/page/
  67. 4 링크가 /news 형식의 c, d인 경우
  68. 5 */
  69. 6 $config['
  70. total_rows
  71. '] = $total;//총 레코드 수, 이에 대해서는 말할 것도 없고 데이터베이스에서 얻은 총 레코드 수입니다
  72. 7 $config[' per_page
  73. '] = $pagesize; //페이지당 항목 수.글쎄, 이것에 대해서는 할 말이 많지 않습니다. . 직접 설정하세요. 기본값은 10입니다.
  74. 8 $config['page_query_string'] = TRUE;
  75. 9 /* 매개변수 전달 형식. true를 켜면 URL 뒤에 &per_page=3이 자동으로 추가됩니다. (이 per_page는 기본 쿼리 문자입니다. 물론 $config['query_string_segment']를 사용하여 직접 설정할 수도 있습니다)
  76. 10 따라서 c와 d의 형식은 일반적으로 localhost/news?&per_page=2이지만 동일하며 아무런 영향을 미치지 않습니다. get의 per_page는 여전히 3
  77. 11 */
  78. 12 $config['first_link '] = '홈페이지'; // 첫 번째 페이지는
  79. 13 $config['last_link'] = '마지막 페이지'; // 마지막 페이지 표시
  80. 14 $config['next_link'] = '다음 페이지>'; // 다음 페이지에는
  81. 15 $config['prev_link'] = '<<🎜가 표시됩니다. >이전 페이지'; // 이전 페이지 표시
  82. 16 $config['
  83. cur_tag_open'] = '< aclass="현재">'; // 현재 페이지 시작 스타일
  84. 17 $config['
  85. cur_tag_close'] = '< ;/>';
  86. 18 /
  87. * 현재 페이지의 끝 스타일입니다. 직접 시도해 볼 수 있습니다.
  88. 19예를 들어 현재 페이지의 페이징 번호 스타일을 빨간색 글꼴 등으로 더 보기 좋게 만들고 싶습니다. 현재 🎜>에 css코드
  89. */21 $config['
  90. 링크 수 '] = 2;//현재 연결 전후에 표시되는 페이지 번호입니다. 이는 현재 페이지가 5페이지이고 3, 4을 볼 수 있음을 의미합니다. , 5, 6, 7페이지입니다.
  91. 22
  92. $config[' uri_segment']=4;23
  93. /*링크 스타일 a), b)를 사용할 때 페이지 수를 결정하는 데 사용됩니다.
  94. 24 예를 들어 localhost/news/page/3의 uri_segment는 3으로 설정되어야 합니다. localhost/news/title/page/3 4
  95. 25로 설정해야 합니다. */
  96. 26
  97. $config['use_page_numbers ']=;
  98. 27
  99. /*a)와 b)의 차이입니다. 켜져 있으면 페이지에 페이지 수가 표시됩니다. false는 레코드 수를 나타냅니다. 위 내용은 내용적인 측면을 포함하여 CI 프레임워크의 간단한 사용법을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿