">

 >  기사  >  백엔드 개발  >  온씽크(Onthink) 연구 에세이

온씽크(Onthink) 연구 에세이

WBOY
WBOY원래의
2016-08-08 09:33:071117검색

--------------- (코드 작성은 외롭지 않습니다_샤오샤오다이)

아직 출시되지 않은 웹사이트를 작성하기 위해 Onthink를 사용했습니다. 기능이 약간 불완전하고, 여러 곳에 있어서 강력하고 확장성이 부족합니다.

그러나 강력한 데이터 테이블 제어 기능은 여전히 ​​부족합니다. 이를 고려하여 Thinphp3.2.2 기반 개발의 세계로 들어갑니다. . .

첫날에는 매뉴얼의 서문, 기본 사항, 구성, 아키텍처, 라우팅 읽기를 완료합니다.

다음날 컨트롤러 모델 읽기 완료 부록 읽기에 대해

다음은 독서 대본입니다

************************************************************************ ***** **

use는 직접 참조를 용이하게 하기 위해 어떤 네임스페이스가 도입되었는지 나타냅니다.
함수 이름 지정 방법은 소문자와 밑줄을 사용합니다.
함수는 소문자와 밑줄을 사용합니다. 또는 이중 밑줄로 시작하는 메소드가 매직 메소드로 사용됩니다. __call
입력 변수를 얻기 위해 I 함수를 사용하는 좋은 습관을 기르십시오.
환경을 업데이트하거나 변경한 후 문제가 발생하면 첫 번째 문제는 런타임 디렉터리
컨벤션 구성 애플리케이션 구성 모드 구성 디버깅 구성 상태 구성 모듈 구성
기존 구성 ThinkPHP/Conf/convention.php 애플리케이션 구성은 기존 구성의 확장을 기반으로 합니다.
Application/Common/Conf/ config.php는 모든 모듈을 호출하기 전에 로드됩니다. 공용 구성 파일
선택적 모드 구성은 이 모드에서 실행되도록 애플리케이션 구성 폴더에 config_application name.php 파일을 추가하는 것입니다.
on, ThinkPHP/Conf/debug.php 및 애플리케이션 디버깅 구성 파일 아래의
상태 구성 애플리케이션은
모듈 구성을 수동으로 분리하는 것입니다. 애플리케이션/현재 모듈 이름/Conf/config.php
구성을 읽습니다. file
구성 파일을 정의한 후 모두 동일하게 사용됩니다. 시스템에서는 C 방법(Config를 사용할 수 있음)을 제공하여 읽거나 설정할 수 있습니다.
구성 매개변수 이름에는 '.' 및 특수 문자가 포함될 수 없습니다. 밑줄 C 메소드는 2차원
구성 매개변수를 읽을 수 있습니다. C를 통해 구성된 매개변수 값은 전역적으로 유효합니다. C를 통해 구성된 매개변수 값은 현재 유효하며 데이터베이스에 기록되지 않습니다.
URL 세부 정보 pathinfo 모드 설명
serverName/index. php (또는 기타 애플리케이션 항목 파일)/module/controller/option/[ 매개변수 이름/매개변수 값...]
공용 구성 파일 config.php 공용 함수 파일 function.php는 common_path에 경로를 로드할 수 있습니다.
구성 엔트리 파일에 정의되어 있으면 Application Load Application
에 추가할 필요가 없습니다. 3.2.2 엔트리 파일에 작성된 모듈과 컨트롤러는 기본적으로 자동 생성됩니다. Define('BIND_MODULE','xx') like
더 많은 컨트롤러를 생성하려면 BUILD_CONTROLLER_LIST 상수
// 관리 모듈을 현재 항목 파일에 바인딩
Define('BIND_MODULE','Admin ') ;
정의('BUILD_ControlLER_LIST','Index,User,Menu');
ThinkBulid 클래스의 메소드를 수동으로 호출하여 모델 클래스 ThinkBuild::buildModel 🎜>//금지된 액세스 모듈 구성 목록을 생성합니다. 모듈(다른 모듈에 의해 호출되거나 액세스가 열리지 않음) 기본 구성에서
는 공통 모듈 및 런타임 모듈에 대한 액세스를 금지합니다(런타임 디렉터리는 기본 런타임 디렉터리입니다). 다른
금지된 액세스 모듈 목록:
'MODULE_DENY_LIST' => array('Common','Runtime','Api'),
액세스 목록 설정
허용된 액세스 목록 및 기본 모듈
               ' MODULE_ALLOW_LIST'                          => MULTI_MODOULE=>false 액세스
다중 항목 디자인
매개변수 바인딩 모듈 허용
// 홈 모듈을 현재 항목 파일에 바인딩 $_GET['m'] = 'Home'; 🎜> 정의( 'APP_PATH','./Application/');require './ThinkPHP/ThinkPHP.php';
바인딩 후 http://serverName/index.php/Home/Index/index는                                          : //serverName/home.php/Index/index (바인딩 후 URL은 홈을 표시하지 않음)
URL은 대소문자를 구분합니다. URL_CASE_INSENSITIVE=>true
모델 계층 데이터 계층, 논리 계층, 서비스 계층 등 모델 레이어: Model, Logic, servive
생성 시 D 메소드를 사용하여 D('User','Logic');//UserLogic 인스턴스화 D('User')를 인스턴스화하는 것이 매우 편리합니다. 🎜> UserModel .
시스템 기본 뷰 레이어 변경 DEFAULT_V_LAYER=>'Mobile'; 기본이 아닌 뷰 레이어 디렉터리에 대한 템플릿을 얻으려면
T 함수를 사용하세요.
Controller 레이어의 핵심 컨트롤러는 시스템 내부의 App 클래스에서 완성됩니다
Event/UserEvent//사용자 이벤트 응답 작업에 사용됩니다. Controller는 외부 응답을 담당합니다
A('User','Event');
CBD 모델
Core(core)+Behavior(behavior)+Driver(driver)
Driver(driver)
3.2 아키텍처 디자인 측면에서 드라이버 디자인을 더욱 강화하고, 이전 엔진 및 모드 확장을 대체하고, 동작 디자인을 개선합니다
디자인은 전체 프레임워크를 더욱 유연하게 만들고, 데이터를 작성해야 하는 기능 클래스 라이브러리에 드라이버 기반 디자인 아이디어가 채택되었기 때문에
새로운 프레임워크는 분산 배포 요구 사항을 쉽게 충족할 수 있으며 클라우드 플랫폼을 보다 쉽게 ​​구현할 수 있습니다.
행동
행동은 상대적으로 추상적인 개념이며, 행동은 다양한 위치에서 발생합니다.
일부 동작은 애플리케이션이 실행되기 전이고 일부는 템플릿이 출력된 후입니다. 이러한 동작의 위치를 ​​태그(비트)로 사용하며 애플리케이션이 이 태그에 대해 실행될 때에도 사용할 수 있습니다. AOP 프로그래밍의 "aspect" 개념과 유사하게 가로채서 관련
동작이 균일하게 실행됩니다. 관련 동작을 특정 태그에 바인딩하는 것은 AOP와 유사한 프로그래밍
아이디어가 됩니다.
태그 비트
태그 기능은 특정 태그 비트를 설정하는 데 사용되며 하나의 매개변수만 허용합니다. 여러 매개변수를 전달해야 하는 경우
배열인 ThinkHook을 사용하세요. :listen('my_tag' );
동작 정의는 동작 호출 메커니즘의 영향으로 인해 실행 항목 메소드 run을 정의해야 합니다. 호출은 어디에서 반환됩니까?
동작 바인딩 동작을 정의한 후 특정 레이블에 정의해야 적용됩니다. 그렇지 않으면 실행되지 않습니다. 동작과 태그 위치는 애플리케이션
의 동작 정의 파일의 tagged.php 파일에 정의되어야 합니다.
return array( '태그 이름 1'=>array('동작 이름 1','동작 이름 2',...), '태그 이름'
2'=>array('동작 이름 1 ','Behavior name 2',...), );
3.2.1 버전 이상에서는 해당 클래스 라이브러리에서 네임스페이스를 사용하지 않도록 설정할 수 있습니다.
구성 파일 'APP_USE_NAMESPACE' => false(시스템 클래스를 상속하고 호출할 때 여전히 필요)
버전 3.2에서는 PHP 내장 클래스 라이브러리 또는 네임스페이스를 사용하여 정의되지 않은 타사 클래스를 인스턴스화합니다.
$class = new stdClass(); $sxml = new SimpleXmlElement($xmlstr);
자동 로딩(네임스페이스 자동 로딩) Library 디렉토리 아래의 네임스페이스를 자동으로 식별하고 찾을 수 있습니다.
라이브러리 디렉터리의 네임스페이스 외에도 다른 네임스페이스도 정의할 수 있습니다.
autoload_namespace
클래스 라이브러리 ThinkThink::addMap($map);을 사용하여 여러 루트 네임스페이스를 매핑하여 효율성을 향상합니다. ();
클래스 라이브러리를 가져오려면 가져오기 메서드를 사용하여 타사 클래스 라이브러리를 수동으로 가져옵니다.
내장된 캐싱 메커니즘 및 라이트 파일 실행. 새 버전의 기능: 런타임 시 정적 항목 파일을 생성합니다.
애플리케이션 모드 애플리케이션 모드는 자동 인식 영역을 추가하는 것입니다
프로젝트 컴파일 애플리케이션 컴파일 캐시(첫 실행용 캐시) - Lite 파일 실행(정적 항목)
------------ -============
경로 정의
URL이 일반 모드가 아닙니다. 라우팅을 활성화하려면 애플리케이션(또는 모듈) 구성 파일
//에서 라우팅을 활성화할 수 있습니다. 라우팅 켜기 'URL_ROUTER_ON' =>true, 3.2 라우팅은 모듈용이므로 모듈 이름을 라우팅할 수 없습니다.
라우팅 정의는 일반적으로 모듈 구성 파일에도 있습니다.
라우팅 표현식 => 라우팅 주소 및 수신 매개변수 배열('라우팅 표현식','라우팅 주소','수신 매개변수
번호')
라우팅 표현식
정규식/ ^blog/(d+) $/
정규식 blog/:id

완전 일치 $
공개 메소드
-------
Controller
작동할 메소드가 시스템 키워드와 충돌하는 컨트롤러 메서드의 경우 메서드 접미사
를 설정하여 'ACTION_SUFFIX' => 'Action', // 작업 메서드 접미사
다단계 제어 컨트롤러는 컨트롤러를 그룹화하는 것입니다
인스턴스화된 컨트롤러가 내부 컨트롤러인 경우 URL 주소 확인을 사용할 때 자동으로 인스턴스화되고 호출됩니다.
인스턴스화되고 바로 가기 메서드를 사용합니다. 다중 레벨, A)의 두 번째 매개변수를 사용합니다.
인스턴스화할 때 메소드를 인스턴스화할 수 있습니다.
사전 및 사후 작업(컨트롤러에만 유용함)
일반적인 작업은 _before_index pre-method_after_index post입니다. -method. 사전 사후 메서드가 정의되지 않은 경우 실제 모듈 출력은 현재 작업일 수 있습니다. 일반적으로 사전 및 사후 작업에는 출력이 없습니다. 오류 작업
이 성공적으로 호출되면 사후 작업이 발생하지 않습니다.
컨트롤러는 매개변수 규칙, 액션 매개변수 바인딩도 바인딩할 수 있습니다(변수 이름을 바인딩하여 라우팅 기능 구현 가능)
Pseudo-static
URL_HTML_SUFFIX=>'' 정적 접미사는 상수 __EXT__에 기록됩니다. (현재 접미사를 얻을 수 있습니다)
URL_DENY_SUFFIX=> 접근이 허용되지 않는 여러 접미사는
로 구분됩니다.아래 우선순위는 위의
URL 케이스 'URL_CASE_INSENSITIVE' =>true 컨트롤러에 액세스할 때 대소문자를 구분하지 않는 경우 _
로 대문자로 표시합니다. 시스템은 주소에 대한 관련 URL을 자동으로 생성하는 U 메소드를 제공합니다
U 유사(리디렉션)(URL 생성)
사용된 URL 모드를 일치시키기 위해서는 현재 URL 설정을 기반으로 해당 URL 주소를 동적으로 생성할 수 있어야 합니다. 이를 위해
ThinkPHP. 내장된 U 메소드는 URL의 동적 생성에 사용되며, 이를 통해 이식 과정에서 프로젝트가 환경의 영향을 받지 않도록 할 수 있습니다.
U('주소 표현',['매개 변수'],['의사 정적 접미사'],['도메인 이름 표시'])
[모듈/컨트롤러/작업#앵커@도메인 이름]?Parameter 1=값 1&매개변수 2=값 2...
ajax는 ajaxReturn을 반환합니다
변수 배열에서 반환된 데이터는 JSON, JSONP, XML 및 EVAL을 구성할 수 있습니다.
이 메서드는 DEFAULT_AJAX_RETURN을 반환합니다. return eval은 $data 데이터를 출력할 수 있습니다
JSON과 JSONP 사이에는 단 한 글자의 차이가 있지만 실제로는 전혀 동일하지 않습니다. JSON은 데이터 교환 형식인 반면 JSONP는 비공식 도메인 간 데이터 교환 프로토콜입니다. . 하나는 정보의 형식을 기술하는 것이고, 다른 하나는

합의된 정보 전송 방법입니다.
점프 및 리디렉션
$this->success(프롬프트 정보, 주소, 초)
----==--=-=
입력 변수
I를 전달할 수 있습니다. 변수 획득 및 필터링을 수행하는 함수
I('변수 유형.변수 이름',['기본값'],['필터 방법'],['추가 데이터 소스'])
I 함수는 With와 함께 제공됩니다. DEFAULT_FILTER, 기본값은 htmlspecialchars(변수 필터링)
요청 유형 결정(요청 유형)
is_XXX 사용자 정의 AJAX인 경우 ajax에 의해 제출되었음을 배경에 알리기 위해 숨겨진 필드를 추가해야 합니다. .jquery라면
필요하지 않습니다. VAR_AJAX_SUBMI를 통해 구성 가능
빈 작업
자동으로 _empty 호출(오류 페이지 및 일부 URL 최적화 구현)
빈 컨트롤러 시스템은 빈 컨트롤러
작업을 클래스 ACTION_BIND_CLASS=>'true'에 바인딩하려고 시도합니다. 보다 세부적으로 분류하려면
을 생략할 수 없습니다.
-=-=-=-=-=-=-=-=-=-= -=-
모델. 대문자 및 소문자 _Conversion
모델 클래스의 직접 인스턴스화는 일반적으로 모델 이름 데이터 테이블 접두사 번호
데이터베이스 연결 정보
를 갖습니다. 네이티브 SQL 코드를 작성하려면 빈 인스턴스화만 하면 됩니다. M()과 같습니다;
D(데이터 모델의 인스턴스화 작업)
메서드의 매개 변수는 모델의 이름이며 다음과 일치합니다. 모델 클래스의 사례 정의
클래스가 존재하지 않는 경우 D 함수는 다음 공용 모듈을 인스턴스화하려고 시도하며 여러 모듈에서도 사용할 수 있습니다.
M(데이터에 대해 기본 CURD 작업만 수행) 테이블)은 특정 모델 클래스를 로드할 필요가 없으므로 성능이 더 높습니다.
지원되지 않습니다. 자체 비즈니스 로직
인스턴스화 과정에서 D 메서드와 M 메서드를 자주 사용합니다. M 메소드는 사용자가 각 데이터 테이블에 대한 모델 클래스를 정의하지 않고 모델
을 인스턴스화한다는 점입니다. D 메소드가 정의된 모델 클래스를 찾지 못하면 자동으로 M
메소드를 사용합니다.
필드 캐시에는 필드의 필드 정보가 포함되어 있습니다. DB_FIELDS_CACHE를 설정하여 이 필드를 프로젝트 구성
파일에 추가하세요.
데이터 테이블 getDbFields() 필드의 모든 필드 정보를 가져옵니다. (''/ *); 호출할 모든 필드 가져오기
(true).
데이터 테이블을 전환하려면 table()을 사용하세요. 데이터베이스에 연결할 때 연결에 레이블을 추가할 수 있습니다.
시스템 기본 규칙, 쓰기 작업 쿼리 읽기 작업을 위해 모델 실행을 사용해야 합니다.
일관된 작업(체인 작업)
where는 where와 함께 사용할 수 있습니다.
데이터 메서드는 데이터베이스에 대해 작성되며 사용할 수도 있습니다. 업데이트(저장)를 위해 기본 키 개체 또는 숫자
그룹, 개체 및 문자열이 있는지 확인합니다. 읽기 작업이 가능합니다.
필드는 user_id 및
content 이외의 필드를 제외합니다. 쓰기(보안 제어)에 사용되며 다른 쓰기를 허용하지 않습니다. $model->field('name')-
>create()는 양식의 법적 필드가 이름 필드만 있음을 의미합니다. 사용자는 어떤 수단으로 브라우저를 변경하거나 추가했습니까
제출 필드가 직접 차단됩니다. 다른 모든 필드는 사용자 제출에 의해 결정되기를 원하지 않으므로
자동 완성 기능을 통해 작성할 추가 필드를 정의할 수 있습니다.
filtert(필드 내용 필터링)는 내 판단 $User->data($data)->filter
('strip_tags')->add();와 다소 유사합니다. 지원 콜백 형태의 함수는 함수일 수도 있고 클로저일 수도 있다
정의)
갖는 방식은 그룹 방식과 협력하여 그룹화된 결과를 다시 쿼리하는 방식이다.
캐시 s
코멘트 코멘트
Create 메소드로 생성된 데이터 객체는 메모리에 저장되며 add
또는 save 메소드를 사용할 때까지 실제로 데이터베이스에 기록되지 않습니다. 추가 또는 저장 후 데이터베이스에 기록되므로 변경 사항이 발생하기 전에
생성 개체를 변경할 수 있습니다.

---
찾기(필드 읽기) 선택(읽기) field) Set) getField (필드 값 읽기) [숫자 업데이트 setInc setDec]
delete() [seve와 유사하게 조건이 전달되지 않으면 삭제되지 않습니다.]
양식 매핑 데이터 획득 자동 처리 설정이 켜져 있습니다 'READ_DATA_MAP'=>true
형식 변환을 위해 ParseFieldsMap을 사용할 수도 있습니다.
쿼리 메서드
배열 '_logic'='OR' stdClass를 쿼리하려면 객체 모드를 사용하세요.
$map ['b'] =array('notlike',array('%thinkphp%','%tp'),'AND');
exp 표현식 쿼리(exp 쿼리 조건은 문자열로 처리되지 않음) 모든 후속 쿼리 조건은 함수 및 필드 이름 사용을 포함하여
SQL에서 지원하는 모든 구문을 사용할 수 있습니다. 쿼리 표현식은 쿼리 조건뿐만 아니라 숫자에도 사용할 수 있습니다.
업데이트되었습니다.
$data['score'] = array('exp','score+1');//사용자 포인트에 1을 추가합니다
$User->where('id=5')-> ; save($data); //조건에 따라 수정된 데이터를 저장
다국어 패키지 지원

*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* _* _*_12_1
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
다중 레벨 컨트롤러
인스턴스 컨트롤러
고유
(토큰 확인) 토큰
ORM 테이블 매핑 클래스 레코드 매핑 개체
AR 모드 ActiveRecord 간단한 명령
방법 접두사를 사용하여 로컬 세션 관리 지원 활성화

*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_* _* _*_12_1

위 내용은 관련 내용을 포함하여 Onthink 학습 에세이를 소개한 것입니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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