>  기사  >  백엔드 개발  >  ThinkPHP 소스코드 학습 방법

ThinkPHP 소스코드 학습 방법

WBOY
WBOY원래의
2016-07-29 09:16:161168검색

저는 최근에 ThinkPHP를 사용하여 프로젝트를 진행하고 있습니다. 좀 더 깊이 있게 배우고 싶어서, 쉽게 잊어버리기 쉬운 것들을 기록하기 위해 일부러 ThinkPHP를 공부했습니다. 시작하자.

공식 웹사이트 설명:

I 메소드 는 ThinkPHP의 많은 단일 문자 기능의 새로운 멤버입니다. 그 이름은 영어 입력( 입력) 주로 시스템 입력 변수를 보다 편리하고 안전하게 얻기 위해 사용됩니다. 사용 형식은

('변수 유형.변수 이름)입니다. ',['기본값' ],['필터링 방법'])
변수 유형은 다음을 포함하여 요청 방법 또는 입력 유형을 나타냅니다.

참고: 변수 유형은 대소문자를 구분하지 않습니다.
변수 이름은 대소문자를 엄격하게 구분합니다.
기본값과 필터링메서드는 선택적 매개변수입니다.

공식 코드는 다음과 같습니다.

함수 I($name,$default='',$filter=null,$datas=null) {
static $_PUT=null;//정적을 정의하려면 static을 사용하고, 클래스 멤버나 메서드를 정적으로 선언하면 클래스를 인스턴스화하지 않고도 직접 액세스할 수 있습니다. 정적 멤버(정적 메서드 제외)는 객체를 통해 액세스할 수 없습니다.
if(strpos($name,'/')){ // 수정자 지정 strpos( ) 함수는 다음과 같습니다. 다른 문자열에서 문자열이 처음 나타나는 위치를 찾고, 매개변수 nam
list($name, $type)에서 '/'가 처음 나타나는 위치를 찾습니다. =explode('/',$name,2);//explode(separator,string,limit) 함수는 특정 문자에 따라 문자열을 변환하는 것을 의미합니다. 기본값은 배열, 제한은 반환된 배열의 수입니다
}elseif(C('VAR_AUTO_STRING')){ // 기본값은 문자열로 강제됩니다 // ThinkPHP의 C 메서드 호출
$type = 's';
}

//요약 if의 의미는 매개변수에 /
if(strpos($name,'.')) { //매개변수 소스 지정 //가지고 있는지 확인하세요.!
list($method,$name) =explod('.',$name,2);
}else{ // 기본값은 자동 판단
$method = 'param';
}
switch(strtolower($method)) { //strtolower()는 모든 문자를 소문자로 변환하고 스위치를 사용하여 메소드
case 'get'의 유형을 찾습니다.
$input =& $_GET;
break;
케이스 'post' :
$input =& $_POST ;
break;
케이스 'put' :
if(is_null($_PUT)){ parse_str(file_get _contents('php ://input'), $ _PUT);                                                                            
break; case 'param' :
switch($_SERVER['REQUEST_METHOD']) { //$_SERVER['REQUEST_METHOD' 메소드 요청 메서드 이름을 얻으려면 switch()를 사용하여 메서드 유형을 찾으세요. 여기서 아이디어는 recursion > case 'PUT' :                                                                                                    
}                                                        } break; 케이스 '경로' : $input = array();
if(!empty($_SERVER[' PATH_INFO'])){               $ depr = C('URL_PATHINFO_DEPR '); $input =explore($depr,trim($_SERVER['PATH_INFO'],$depr));        break;
        케이스 '요청' :
$input =& $_REQUEST; 🎜> break; 케이스 '세션' : $input =& $_SESSION
break;
케이스 '쿠키' :
$input =& $_COOKIE
>break; ;
케이스 '서버' : $input =& $_SERVER; 중단;
케이스 '전역' :  
$input =& $GLOBALS break; 케이스 '데이터' :
$input =& $datas; 🎜>break; 기본값: return null; }
if(''==$name) { // 모든 변수 가져오기
$data = $input;
$filters = isset($filter)?$filter:C('DEFAULT_FILTER');//삼항 연산자 isset() 함수는 일반적으로 변수가 설정되어 있는지 확인하는 데 사용되며, empty()는 변수가 비어 있는지 확인하는 데 사용됩니다.
if($filters) {
if (is_string( $filters)){
                                                              with   $filters           using   using   using         using using '     통해  ’ ~ ’를 사용하여 ‐ ‐ ‐ ‐‐ 를 사용하여 array_map_recursive($filter,$data ; 값 작업
              $data                                                      (IS_STRING ($ 필터)) {
IF (0 === Strpos ($ 필터, '/') {
IF (1! == Preg_match ($ 필터, (문자열) $ data)) {) {// preg_match ()는 정규 표현식과 일치하는 데 사용됩니다 🎜> f>
IS_ARRAY ($ 필터)) {
foreach ($ 필터는 $ Filter) {
If (Function_exists ($ Filter)) {
$ Data = IS_ARAY ($ Data)? array_map_recursive($filter,$data) : $filter($data);
                                                                                                          > >  }
if(!empty($type)){//스위치를 사용하여 유형 유형 결정
switch(strtolower($type)){
'a' 경우:// 배열
                                                                    | ~ =(부동산) $data;
break;
case 'b':// 부울                                                                                          's': // 문자열 se{ // 변수 기본값
$data = isset($default)?$default:null; } is_array($data) && array_walk_recursive($data,'think_filter'); return $data; }
I 메서드는 주로 프런트엔드에서 백엔드로 전달되는 값을 가져오는 데 사용됩니다. 이 메서드는 4개의 매개변수를 정의하며 이 매개변수는 하나만 필요합니다. 는 획득할 이름이며 나머지는 변경할 수 있습니다. 위에서 빨간색으로 표시된 부분은 코드를 읽을 때 기억해야 할 몇 가지 지식 포인트입니다.
기능: 입력으로 전달된 매개 변수를 안전하게 가져옵니다. 구현 아이디어:
제출 시 해당 유형을 따르면 지정된 유형에 따라 처리됩니다. 따르지 않으며, 위에서 타입을 지정한 경우 서버 변수에 따라 타입이 결정됩니다. 제출된 데이터의 보안을 필터링을 통해 보장합니다. 저작권 안내: 이 글은 해당 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.
위 내용은 ThinkPHP 소스코드를 학습하는 방법을 다양한 측면에서 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:객체지향 PHP (5)다음 기사:객체지향 PHP (5)