thinkpp 5.1 프레임 갈고리 와 행위 용법 사례 분석

본 논문 의 사례 는 thinkpp 5.1 프레임 갈고리 와 행위 용법 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
행위.
ThinkpHP 에서 의 행 위 는 비교적 추상 적 인 개념 으로 행 위 를 응용 집행 과정 에서 의 동작 으로 상상 할 수 있다.
프레임 워 크 의 실행 절차 에서 예 를 들 어 경로 검 측 은 하나의 행위 이 고 정적 캐 시 는 하나의 행위 입 니 다.사용자 권한 검 측 도 행위 입 니 다.큰 업무 논리,작은 브 라 우 저 검 측,다 중 언어 검 측 등 은 모두 하나의 행위 라 고 할 수 있 습 니 다.심지어 귀하 가 원 하 는 사이트 사용자 에 게 처음으로 Hello,World 를 방문 하고 싶 습 니 다!이것들 은 모두 하나의 행위 로 볼 수 있다.이러한 행 위 를 추출 하 는 목적 은 프레임 워 크 와 응용 을 바 꾸 지 않 고 외곽 에서 확장 이나 설정 을 통 해 기능 을 바 꾸 거나 추가 하기 위 한 것 이다.
갈고리
서로 다른 행위 간 에 도 위치 공통성 을 가진다.예 를 들 어 어떤 행위 의 역할 위 치 는 모두 응용 집행 전에 어떤 행 위 는 모두 템 플 릿 출력 후에 우 리 는 이런 행위 가 작용 하 는 위 치 를 갈고리 라 고 부른다.
프로그램 이 이 갈고리 로 실 행 될 때 차단 되 어 관련 행 위 를 통일 적 으로 수행 합 니 다.
하나의 갈 고 리 는 여러 가지 행 위 를 등록 할 수 있 으 며,어떤 갈고리 위치 에 이 르 면 등 록 된 순서에 따라 관련 행 위 를 순서대로 집행 한다.그러나 특정한 상황 에서 특정한 갈 고 리 를 설정 하여 한 번 만 행 위 를 수행 할 수 있 거나 한 갈고리 의 특정한 행위 에서 되 돌아 갈 수 있다false.하나의 행 위 는 여러 개의 서로 다른 갈고리 에 동시에 등록 하여 응용의 수 요 를 완전히 보고 디자인 할 수 있다.
갈고리 설정:

Hook::listen('    ','  ','           ');
갈고리 이름 을 제외 하고 다른 매개 변 수 는 모두 선택 할 수 있 습 니 다.5.1 버 전의 두 번 째 매개 변 수 는 참조 전송 값 을 지원 하지 않 습 니 다.
행동 정의
행위 류 의 정 의 는 매우 간단 하 다.일반적으로 하나의 행위 입구 방법run만 정의 하면 된다.
행동 방법 에서 의존 주입 을 사용 할 수 있다.
행위 유형 은 어떤 유형 도 계승 할 필요 가 없고 상대 적 으로 유연 하 다.행동 류 가 여러 갈고리 에 연결 되 어야 한다 면 여러 가지 방법 을 정의 할 수 있 습 니 다.
행동 바 인 딩
행동 정의 가 완료 되면 탭 위치 에 연결 해 야 효력 이 발생 합 니 다.그렇지 않 으 면 실행 되 지 않 습 니 다.
think\facade\Hook 류 의 add 방법 으로 등록 하 는 행위,예 를 들 어:

//    app\index\behavior\CheckLang    app_init   
Hook::add('app_init','app\\index\\behavior\\CheckLang'); 
//   app\admin\behavior\CronRun    app_init   
Hook::add('app_init','app\\admin\\behavior\\CronRun');
대량 등록 행 위 를 하려 면 사용 할 수 있 습 니 다:

Hook::add('app_init',['app\\index\\behavior\\CheckAuth','app\\index\\behavior\\CheckLang','app\\admin\\behavior\\Cr

응용 프로그램 이 app 로 실 행 될 때init 탭 위 치 는 app\index\behavior\CheckAuth,app\\index\behavior\\CheckLang 과 app\admin\\behavior\CronRun 행 위 를 순서대로 호출 합 니 다.한 행동 에 중지 코드 가 있 으 면 후속 으로 실행 되 지 않 습 니 다.false로 돌아 가면 현재 탭 의 후속 행 위 는 실행 되 지 않 지만 응용 은 계속 실 행 됩 니 다.
패 킷 지원
패 킷 함 수 를 탭 위치 에 직접 연결 하 는 행 위 를 정의 하지 않 아 도 됩 니 다.예 를 들 어:

Hook::add('app_init',function(){ 
  echo 'Hello,world!';
});
탭 위치 에 전 송 된 매개 변수 가 있 으 면 패 킷 을 닫 아 도 전 송 된 매개 변 수 를 지원 할 수 있 습 니 다.예 를 들 어:

Hook::listen('action_init',$params);
Hook::add('action_init',function($params){ 
  var_dump($params);
});

직접 실행 행위
필요 하 다 면 행동 탭 을 연결 하지 않 고 어떤 행동 을 직접 호출 할 수도 있 습 니 다.사용:

//    app\index\behavior\CheckAuth    run        params  
$result = Hook::exec('app\\index\\behavior\\CheckAuth',$params);

행 위 를 직접 수행 할 때 실행 하 는 것 은 run 방법 입 니 다.행위 류 의 다른 방법 이 필요 하 다 면 사용 할 수 있 습 니 다.

//    app\index\behavior\CheckAuth    hello        params  
$result = Hook::exec(['app\\index\\behavior\\CheckAuth','hello'], $params);

thinkpHP 와 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,ThinkpHP 입문 강좌,thinkpHP 템 플 릿 조작 기법 요약,ThinkPHP 상용 방법 총화,codeigniter 입문 강좌,CI(CodeIgniter)프레임 워 크 진급 강좌Zend FrameWork 프레임 워 크 입문 강좌.
본 고 는 ThinkPHP 프레임 워 크 를 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기