코드이그나이터프레임워크 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 425로 설정해야 합니다. */26 $config['use_page_numbers ']= 참; 27 /*a)와 b)의 차이입니다. 켜져 있으면 페이지에 페이지 수가 표시됩니다. false는 레코드 수를 나타냅니다. 위 내용은 내용적인 측면을 포함하여 CI 프레임워크의 간단한 사용법을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.