> 백엔드 개발 > PHP 튜토리얼 > Thinkphp 단일 문자 기능 사용 가이드_php 팁

Thinkphp 단일 문자 기능 사용 가이드_php 팁

WBOY
풀어 주다: 2016-05-16 09:00:20
원래의
1876명이 탐색했습니다.

방법A

컨트롤러를 내부적으로 인스턴스화하는 메서드는 다음 형식을 호출하는 데 사용됩니다: A('[project://][group/]module','controller layer name')
가장 간단한 사용법:

코드 복사 코드는 다음과 같습니다.
$User = A('User');

은 현재 프로젝트의 UserAction 컨트롤러를 인스턴스화하는 것을 의미합니다(이 컨트롤러에 해당하는 파일은 Lib/Action/UserAction.class에 있습니다.). 그룹 모드가 채택되고 다른 관리 그룹 컨트롤러를 인스턴스화하려는 경우 다음을 수행할 수 있습니다. 사용:

코드 복사 코드는 다음과 같습니다.
$User = A('Admin/User');

프로젝트 간 인스턴스화도 지원됩니다(프로젝트 디렉터리는 동일한 수준으로 유지되어야 함)

코드 복사 코드는 다음과 같습니다.
$User = A('Admin://User' );

은 관리 프로젝트
에서 UserAction 컨트롤러를 인스턴스화하는 것을 나타냅니다. 버전 1에는 계층적 컨트롤러에 대한 지원이 추가되었으므로 A 메서드를 사용하여 다른 컨트롤러를 인스턴스화할 수도 있습니다. 예:

코드 복사 코드는 다음과 같습니다.
$User = A('User','Event) ;

UserEvent 컨트롤러를 인스턴스화합니다(해당 파일은 Lib/Event/UserEvent.class에 있습니다.).
컨트롤러를 인스턴스화한 후 컨트롤러에서 메서드를 호출할 수 있습니다. 그러나 프로젝트 전체를 호출할 때 작업 메서드에 현재 컨트롤러에 대한 특수 변수 작업이 있는 경우 일반적으로 알 수 없는 부분이 있다는 점에 유의해야 합니다. 공개 호출이 필요한 컨트롤러 레이어는 너무 많은 종속성 없이 별도로 개발하는 것이 좋습니다.

B방법

이것은 동작과 함께 제공되며

와 같은 특정 동작을 수행할 수 있는 새로운 기능입니다.

코드 복사 코드는 다음과 같습니다.
B('app_begin');

즉, 프로젝트가 시작되기 전에 이 동작으로 정의된 모든 기능이 실행됩니다. 2개의 매개변수를 지원합니다. 두 번째 매개변수는 와 같은 배열을 허용해야 합니다.

코드 복사 코드는 다음과 같습니다.
B('app_begin',array("name"= & gt; "tdweb","time"=>time()));

C 방식

C 방법은 Think가 구성 매개변수를 설정, 획득, 저장하는 데 사용하는 방법으로, 더 자주 사용됩니다.
C 메소드를 이해하려면 먼저 Think의 구성을 이해해야 합니다. C 메소드의 모든 동작은 구성과 연관되어 있기 때문입니다. Think의 구성 파일은 배열 형식으로 정의됩니다.
함수 오버로딩 설계로 인해 사용법이 많아 하나씩 설명하겠습니다.
매개변수 설정

코드 복사 코드는 다음과 같습니다.
C('DB_NAME','think');

DB_NAME 구성 매개변수의 값이 think로 설정되어 있음을 나타냅니다. 구성 매개변수는 대소문자를 구분하지 않으므로 다음 작성 방법은 동일합니다.

코드 복사 코드는 다음과 같습니다.
C('db_name','think');

그러나 구성 정의 사양은 동일한 대문자로 유지하는 것이 좋습니다.
프로젝트의 모든 매개변수는 적용되기 전에 이 방법을 통해 동적으로 변경될 수 있습니다. 마지막 설정 값은 기존 구성의 이전 설정이나 정의를 덮어쓰며 매개변수 구성 방법을 사용하여 새 구성을 추가할 수도 있습니다.
다음과 같은 보조 구성 매개변수 설정을 지원합니다.

코드 복사 코드는 다음과 같습니다.
C('USER.USER_ID',8);

레벨 2 이상으로 매개변수를 구성하는 것은 권장되지 않습니다.
여러 매개변수를 설정하려면 일괄 설정을 사용할 수 있습니다. 예:

코드 복사 코드는 다음과 같습니다.
$config['user_id'] = 1;
$config['user_type'] = 1;
C($config);

C 메소드의 첫 번째 매개변수가 배열로 전달되면 이는 일괄 할당을 의미합니다. 위의 할당은 과 동일합니다.

코드 복사 코드는 다음과 같습니다.
C('USER_ID',1);
C('USER_TYPE',1);

매개변수 가져오기
설정된 매개변수를 얻으려면 다음을 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
$userId = C('USER_ID');
$userType = C('USER_TYPE');

USER_ID 매개변수가 정의되지 않은 경우 NULL이 반환됩니다.
또한 다음과 같은 보조 구성 매개변수 획득을 지원할 수도 있습니다.

코드 복사 코드는 다음과 같습니다.
$userId = C('USER.USER_ID');

들어오는 구성 매개변수가 비어 있으면 모든 매개변수를 가져오는 것을 의미합니다.

코드 복사 코드는 다음과 같습니다.
$config = C();

설정 저장
버전 .1에는 일괄 할당에 대해서만 설정 매개변수를 영구적으로 저장하는 기능이 추가되었습니다. 예:

코드 복사 코드는 다음과 같습니다.
$config['user_id'] = 1;
$config['user_type'] = 1;
C($config,'이름');

구성 매개변수를 일괄적으로 설정한 후에는 현재의 모든 구성 매개변수가 캐시 파일(또는 기타 구성된 캐싱 방법)에 저장됩니다.
저장 후 저장된 매개변수를 검색하려면 을 사용하면 됩니다.

코드 복사 코드는 다음과 같습니다.
$config = C('','name') ;

그 중 이름은 이전에 매개변수를 저장할 때 사용하는 캐시 식별자입니다. 저장된 매개변수를 올바르게 검색하려면 일관성이 있어야 합니다. 검색된 매개변수는 수동 병합 없이 현재 구성 매개변수와 병합됩니다.

D 방식

D 메서드는 가장 일반적으로 사용되는 메서드입니다. 이는 Think 프레임워크에 의한 모델 클래스 인스턴스화를 캡슐화하는 데 사용되며, 프로젝트 간 및 그룹 호출도 지원합니다. . , 호출 형식은 다음과 같습니다.
D('[프로젝트://][그룹/]모델','모델 레이어 이름')
메서드의 반환 값은 인스턴스화된 모델 개체입니다.
D 메소드는 모델 클래스를 자동으로 감지할 수 있습니다. 사용자 정의 모델 클래스가 존재하면 사용자 정의 모델 클래스가 인스턴스화됩니다. 동시에 모델 기본 클래스가 인스턴스화되지 않습니다. 반복적으로 인스턴스화됩니다.
D 방법의 가장 일반적인 용도는 현재 프로젝트의 사용자 정의 모델을 인스턴스화하는 것입니다. 예를 들면 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
// 사용자 모델 인스턴스화
$User = D('사용자');

현재 프로젝트 아래에 Lib/Model/UserModel.class 파일을 가져온 다음 UserModel 클래스를 인스턴스화하므로 실제 코드는 다음과 동일할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
import('@.Model.UserModel' );
$User = 새로운 UserModel();

하지만 D 메소드를 사용하면 UserModel 클래스가 존재하지 않으면 자동으로 을 호출합니다.

코드 복사 코드는 다음과 같습니다.
new Model('User');

그리고 두 번째 호출 시 다시 인스턴스화할 필요가 없으므로 일정량의 객체 인스턴스화 오버헤드를 줄일 수 있습니다.
D 방법은 그룹과 프로젝트 전반에 걸쳐 모델 인스턴스화를 지원할 수 있습니다. 예를 들면 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
//관리 프로젝트의 사용자 모델 인스턴스화
D('관리자://사용자')
//관리자 그룹의 사용자 모델 인스턴스화
D('관리자/사용자')

참고: 프로젝트 간 호출 모델을 구현하려면 두 프로젝트의 디렉터리 구조가 병렬인지 확인해야 합니다.
버전 .1부터 계층적 모델에 대한 추가 지원으로 인해 D 메서드는 다음과 같은 다른 모델도 인스턴스화할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
// UserService 클래스 인스턴스화
$User = D('사용자','서비스');
// UserLogic 클래스 인스턴스화
$User = D('사용자','논리');

코드 복사 코드는 다음과 같습니다.
D('User','Service');

Lib/Service/UserService.class를 가져오고 인스턴스화하며 이는 다음 코드와 동일합니다.

코드 복사 코드는 다음과 같습니다.
import('@.Service.UserService' );
$User = 새로운 UserService();

F 방식

F 방식은 실제로 S 방식의 하위 집합으로, 단순 데이터 캐싱에만 사용되며, 캐시 유효 기간을 지원하지 않으므로 효율성이 더 높습니다. 따라서 우리는 이를 빠른 캐시 방식이라고 부르기도 합니다.

F 방식의 특징은 다음과 같습니다.
간단한 데이터 캐싱
파일로 저장
데이터를 반환하여 캐시를 로드합니다.
하위 디렉터리 캐싱 및 자동 생성을 지원합니다.
캐시 삭제 및 일괄 삭제 지원
캐싱 쓰기 및 읽기

코드 복사 코드는 다음과 같습니다.
F('data','test data');

기본 저장 시작 경로는 DATA_PATH(이 상수는 기본 구성에서 RUNTIME_PATH.'Data/'에 위치)이며, 이는 파일 이름이 DATA_PATH.'data.'인 캐시 파일이 생성된다는 의미입니다.
참고: 데이터 덮어쓰기 및 충돌을 방지하려면 캐시 식별자가 고유한지 확인하세요.
다음에 캐시된 데이터를 읽을 때 다음을 사용하세요.

코드 복사 코드는 다음과 같습니다.
$Data = F('data');

예를 들어 다음과 같이 하위 디렉터리에 저장할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
F('user/data',$data); // 캐시 쓰기
F('사용자/데이터'); // 캐시 읽기

DATA_PATH.'user/data.' 캐시 파일이 생성됩니다. 사용자 하위 디렉터리가 없으면 다음과 같은 다중 수준 하위 디렉터리도 지원됩니다.

코드 복사 코드는 다음과 같습니다.
F('level1/level2/data',$data );
캐시의 시작 디렉터리를 지정해야 하는 경우 다음 방법을 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
F('data',$data,TEMP_PATH);
획득 시 다음을 사용해야 합니다.

코드 복사 코드는 다음과 같습니다.
F('data','',TEMP_PATH);
캐시 삭제
캐시 삭제도 쉽습니다. 다음을 사용하세요.

코드 복사 코드는 다음과 같습니다.
F('data',NULL)
두 번째 파라미터로 NULL을 전달한다는 것은 데이터로 식별된 데이터 캐시를 삭제한다는 의미입니다.
특히 하위 디렉터리 캐시의 경우 일괄 삭제 기능을 지원합니다. 사용자 하위 디렉터리에 있는 모든 캐시된 데이터를 삭제하려면 다음을 사용하세요.

코드 복사 코드는 다음과 같습니다.
F('사용자/*',NULL);

또는 필터 조건을 사용하여 삭제합니다. 예:

코드 복사 코드는 다음과 같습니다.
F('user/[^a]*', NULL)

G 방식

Thinkphp에서 오랫동안 debug_start, debug_end 메소드, 심지어 Debug 클래스를 통해 완료해야 했던 기능이 버전 3.1에서는 간단한 G 메소드로 대체되었습니다. 이는 멋진 업그레이드입니다.
G 방식의 기능에는 위치 표시와 간격 통계라는 두 가지 기능이 포함됩니다. 구체적인 사용법을 살펴보겠습니다.
위치 표시
G 방법의 첫 번째 사용법은 위치를 표시하는 것입니다. 예를 들면 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
G('begin');

현재 위치가 시작 태그로 표시되며, 현재 위치의 실행 시간이 기록된다는 것을 나타냅니다. 이를 지원하는 환경에서는 메모리 사용량도 기록할 수 있습니다. G 메소드 마커는 어디에서나 호출할 수 있습니다.
실행시간 통계
위치를 표시한 후 G 메소드를 다시 호출하여 간격 통계를 수행할 수 있습니다. 예를 들면 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
G('begin');
// ...다른 조각
G('끝');
// ...여기에 다른 코드가 있을 수도 있습니다
// 통계 간격을 수행
echo G('begin','end').'s';

G('begin','end')는 시작 위치부터 끝 ​​위치까지의 실행 시간을 계산하는 것을 의미합니다(단위는 초). 이때 시작 위치가 표시되지 않은 경우에는 시작 위치가 표시되어야 합니다. 자동으로 현재 위치를 종료 태그로 표시하고 출력 결과는 다음과 유사합니다.

코드 복사 코드는 다음과 같습니다.
0.0056s

기본 통계 정확도는 소수점 4자리입니다. 이 통계 정확도가 충분하지 않다고 생각되면 다음과 같이 설정할 수도 있습니다.

코드 복사 코드는 다음과 같습니다.
G('begin','end',6) .의 ';

가능한 출력은 다음과 같습니다:

코드 복사 코드는 다음과 같습니다.
0.005587s

메모리 오버헤드 통계
환경이 메모리 사용량 통계를 지원하는 경우 G 방법을 사용하여 간격 메모리 오버헤드 통계(단위: kb)를 수행할 수도 있습니다. 예:

코드 복사 코드는 다음과 같습니다.
echo G('begin','end',' m') .'kb';

세 번째 매개변수는 m을 사용하여 메모리 오버헤드 통계를 나타냅니다. 출력 결과는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.
625kb

De même, si la balise de fin n'est pas marquée, la position actuelle sera automatiquement marquée comme balise de fin en premier.
Si l'environnement ne prend pas en charge les statistiques de mémoire, ce paramètre n'est pas valide et les statistiques de temps d'exécution par intervalles seront toujours effectuées.
Oubliez debug_start et debug_end, la simplicité est la voie à suivre, vous savez~

Je méthode

La méthode I de Thinkphp est nouvelle dans la version 3.1.3. Si vous utilisez la version 3.* précédente, vous pouvez directement vous référer à la partie variables de la série de didacticiels de démarrage rapide 3.1.
Aperçu
Comme vous pouvez le voir, la méthode I est un nouveau membre des nombreuses fonctions à une lettre de Thinkphp. Son nom vient de l'anglais Input (input). Elle est principalement utilisée pour obtenir des variables d'entrée système de manière plus pratique et sûre. . Le format d'utilisation est le suivant :
I('Type de variable. Nom de la variable',['Valeur par défaut'],['Méthode de filtrage'])
Le type de variable fait référence à la méthode de requête ou au type d'entrée, notamment :
get Obtenir les paramètres GET
post Obtenir les paramètres POST
param détermine automatiquement le type de requête pour obtenir les paramètres GET, POST ou PUT
la requête obtient les paramètres REQUEST
put obtient les paramètres PUT
la session obtient le paramètre $_SESSION
le cookie obtient le paramètre $_COOKIE
le serveur obtient le paramètre $_SERVER
globals obtient les paramètres $GLOBALS
Remarque : Les types de variables ne sont pas sensibles à la casse.
Les noms de variables sont strictement sensibles à la casse.
La valeur par défaut et la méthode de filtrage sont des paramètres facultatifs.
Utilisation
Prenons comme exemple le type de variable GET pour illustrer l'utilisation de la méthode I :

Copier le code Le code est le suivant :
echo I('get.id'); Équivalent à $ _GET['id']
echo I('get.name'); // Équivalent à $_GET['name']

Valeur par défaut prise en charge :

Copier le code Le code est le suivant :
echo I('get.id',0); // si Si $_GET['id'] n'existe pas, il renverra 0
echo I('get.name',''); // Si $_GET['name'] n'existe pas, renvoie une chaîne vide

Filtrer par méthode :

Copier le code Le code est le suivant :
echo I('get.name','', 'htmlspecialchars' ); // Utilisez la méthode htmlspecialchars pour filtrer $_GET['name']. Si elle n'existe pas, renvoie une chaîne vide

Prend en charge l'obtention directe du type de variable complet, par exemple :

Copier le code Le code est le suivant :
I('get.'); // Récupère le tableau $_GET entier

De la même manière, nous pouvons obtenir des variables de post ou d'autres types d'entrée, par exemple :

Copier le code Le code est le suivant :
1.I('post.name','' ,'htmlspecialchars '); // Utilisez la méthode htmlspecialchars pour filtrer $_POST['name']. Si elle n'existe pas, renvoie une chaîne vide
I('session.user_id',0); // Récupère $_SESSION['user_id'] S'il n'existe pas, la valeur par défaut est 0
I('cookie.'); // Récupère l'intégralité du tableau $_COOKIE
I('server.REQUEST_METHOD'); // Récupère $_SERVER['REQUEST_METHOD']

Le type de variable param est une méthode spécifique au framework pour obtenir des variables qui prend en charge la détermination automatique du type de requête actuel, par exemple :

Copier le code Le code est le suivant :
echo I('param.id');

Si le type de requête actuel est GET, cela équivaut à GET['id']. Si le type de requête actuel est POST ou PUT, cela équivaut à obtenir l'identifiant du paramètre _POST['id'] ou PUT.
Et les variables de type param peuvent également utiliser l'index numérique pour obtenir les paramètres d'URL (le paramètre du mode PATHINFO doit être valide, qu'il soit GET ou POST), par exemple :
L'adresse URL d'accès actuelle est

Copier le code Le code est le suivant :
http://serverName/index./New/2013 /06/01

Ensuite, nous pouvons passer

Copier le code Le code est le suivant :
echo I('param.1'); Sortie 2013
echo I('param.2'); // Sortie 06
echo I('param.3'); // Sortie 01

En fait, la méthode d'écriture de type variable param peut être simplifiée comme suit :

Copier le code Le code est le suivant :
I('id'); // Équivalent à I; ('param .id')
I('name'); // Équivalent à I('param.name')

Filtrage variable
Lors de l'utilisation de la méthode I, les variables passent en fait par deux filtres. Le premier est le filtrage global. Le filtrage global se fait en configurant le paramètre VAR_FILTERS. Il faut noter ici qu'après la version 3.1, le mécanisme de filtrage du paramètre VAR_FILTERS a été modifié. au filtrage récursif à l'aide de la méthode array_walk_recursive. , la principale exigence pour la méthode de filtrage est qu'elle doit être renvoyée par référence, donc la définition de htmlspecialchars ici n'est pas valide. Vous pouvez personnaliser une méthode, par exemple : .

Copier le code Le code est le suivant :
function filter_default(&$value){
$value = htmlspecialchars($value);
>

Configurez ensuite :

Copier le code Le code est le suivant :
'VAR_FILTERS'=>'filter_default'

Si vous devez filtrer plusieurs fois, vous pouvez utiliser :

Copier le code Le code est le suivant :
'VAR_FILTERS'=>'filter_default,filter_exp'

La méthode filter_exp est une méthode de filtrage de sécurité intégrée au framework, qui est utilisée pour empêcher les attaques par injection à l'aide de la fonction EXP du modèle.
Étant donné que le paramètre VAR_FILTERS définit un mécanisme de filtrage global et utilise un filtrage récursif, ce qui a un impact sur l'efficacité, nous recommandons de filtrer directement les variables obtenues. En plus de définir la méthode de filtrage dans le troisième paramètre de la méthode I, le filtrage peut également être défini. en configurant le paramètre DEFAULT_FILTER. En fait, le réglage par défaut de ce paramètre est : .

Copier le code Le code est le suivant :
'DEFAULT_FILTER' => 'htmlspecialchars'

Autrement dit, toutes les variables d'acquisition de la méthode I seront filtrées par htmlspecialchars, puis :

Copier le code Le code est le suivant :
I('get.name'); à htmlspecialchars( $_GET['name'])

De même, ce paramètre peut également prendre en charge plusieurs filtres, par exemple :

Copier le code Le code est le suivant :
'DEFAULT_FILTER' => 'strip_tags,htmlspecialchars'

Copier le code Le code est le suivant :
I('get.name'); à htmlspecialchars( strip_tags($_GET['name']))

Si nous spécifions la méthode de filtrage lors de l'utilisation de la méthode I, le paramètre DEFAULT_FILTER sera ignoré, par exemple :

Copier le code Le code est le suivant :
echo I('get.name','', 'strip_tags' ); // Équivalent à strip_tags($_GET['name'])

Si le troisième paramètre de la méthode I est passé dans le nom de la fonction, cela signifie que la fonction est appelée pour filtrer la variable et la renvoie (si la variable est un tableau, array_map est automatiquement utilisé pour le filtrage), sinon le La méthode filter_var est appelée pour le filtrage, par exemple :
Copier le code Le code est le suivant :
I('post.email','',FILTER_VALIDATE_EMAIL);

Indique que $_POST['email'] sera vérifié au format et s'il ne répond pas aux exigences, une chaîne vide sera renvoyée.
(Pour plus de formats de vérification, veuillez vous référer à l'utilisation de filter_var dans le manuel officiel.)
Ou vous pouvez utiliser l'identification de caractère suivante :
Copier le code Le code est le suivant :
I('post.email','','email') ;

Les noms de filtres pris en charge doivent être des valeurs valides dans la méthode filter_list (différents environnements de serveur peuvent différer). Les noms de filtres pris en charge possibles incluent :
Copier le code Le code est le suivant :
int
booléen
flotter
validate_regexp
validate_url
validate_email
validate_ip
chaîne
dépouillé
codé
chars_spéciaux
unsafe_raw
email
URL
numéro_int
numéro_float
citations_magiques
rappel

Dans certains cas particuliers, nous ne souhaitons effectuer aucun filtrage, même si DEFAULT_FILTER a été défini, vous pouvez utiliser :

Copier le code Le code est le suivant :
I('get.name','',NULL );

Une fois le paramètre de filtrage mis à NULL, cela signifie qu'aucun filtrage ne sera plus effectué.

Méthode L

La méthode L est utilisée pour définir et obtenir la définition actuelle de la langue lorsque plusieurs langues sont activées.
Format d'appel : L('Variable de langue',['Valeur de langue'])
Définir la variable de langue
En plus d'utiliser des packages de langue pour définir des variables de langue, nous pouvons utiliser la méthode L pour définir dynamiquement des variables de langue, par exemple :

Copier le code Le code est le suivant :
L('LANG_VAR','Language Definition');

Les définitions de langage ne sont pas sensibles à la casse, donc ce qui suit est également équivalent :

Copier le code Le code est le suivant :
L('lang_var','langage definition');

Toutefois, dans un souci de standardisation, nous vous recommandons d'utiliser des lettres majuscules pour définir les variables de langue.
La méthode L prend en charge la configuration par lots des variables de langue, par exemple :

Copier le code Le code est le suivant :
$lang['lang_var1'] = 'Language Definition 1 ';
$lang['lang_var2'] = 'Définition de langue 2';
$lang['lang_var3'] = 'Définition de langue 3';
L($lang);

Indique que trois variables de langue lang_var1, lang_var2 et lang_var3 sont définies en même temps.
[-plus-]
Obtenir des variables de langue

Copier le code Le code est le suivant :
$langVar = L('LANG_VAR');

Ou :

Copier le code Le code est le suivant :
$langVar = L('lang_var');

Si le paramètre est vide, cela signifie obtenir toutes les variables de langue actuellement définies (y compris celles du fichier de définition de langue) :

Copier le code Le code est le suivant :
$lang = L();

Ou nous pouvons également utiliser dans le modèle

Copier le code Le code est le suivant :
{$Think.lang.lang_var}

언어 정의를 출력합니다.

M 방식

M 메소드는 기본 모델 클래스를 인스턴스화하는 데 사용됩니다. D 메소드와의 차이점은 다음과 같습니다.
, 모델 클래스를 맞춤설정하고 IO 로딩을 줄이며 성능을 높일 필요가 없습니다.
, 인스턴스화 후에는 기본 모델 클래스(기본값은 Model 클래스)의 메서드만 호출할 수 있습니다. , 인스턴스화할 때 테이블 접두사, 데이터베이스 및 데이터베이스 연결 정보를 지정할 수 있습니다. D 방법의 힘은 캡슐화하는 사용자 정의 모델 클래스가 얼마나 강력한지에 반영됩니다. 그러나 새로운 버전의 Think 프레임워크의 기본 모델 클래스가 점점 더 강력해짐에 따라 M 방법이 점점 더 실용적이 되고 있습니다. D 방식.
M 메소드 호출 형식:
M('[기본 모델명:]모델명','데이터 테이블 접두사','데이터베이스 연결 정보')
M 메서드의 구체적인 용도를 살펴보겠습니다.
, 기본 모델(Model) 클래스를 인스턴스화합니다
모델이 정의되지 않은 경우 다음 방법을 사용하여 작업을 위한 모델 클래스를 인스턴스화할 수 있습니다.

코드 복사 코드는 다음과 같습니다. //사용자 모델 인스턴스화
$User = M('사용자');
//다른 데이터 작업 수행
$User->select();


이 방법은 모델 클래스를 정의할 필요가 없고 프로젝트 간 호출을 지원하므로 가장 간단하고 효율적입니다. 단점은 커스텀 모델 클래스가 없어 관련 비즈니스 로직을 작성할 수 없고 기본적인 CURD 작업만 완료할 수 있다는 점이다.

코드 복사 코드는 다음과 같습니다.$User = M('User');
실제로 다음과 같습니다:

코드 복사 코드는 다음과 같습니다.$User = new Model('User');
think_user 테이블의 동작을 나타냅니다. M 메서드에도 D 메서드와 마찬가지로 싱글톤 함수가 있으며, 여러 번 호출해도 반복적으로 인스턴스화되지 않습니다. M 방식의 모델명 매개변수는 데이터 테이블로 변환 시 자동으로 소문자로 변환되는데, 이는 Think의 데이터 테이블 명명 사양이 모두 소문자 형식임을 의미합니다.
, 다른 공개 모델 클래스를 인스턴스화
인스턴스화의 첫 번째 방법에는 모델 클래스 정의가 없으므로 일부 추가 논리적 방법을 캡슐화하기가 어렵습니다. 그러나 대부분의 경우 몇 가지 공통 논리를 확장하면 다음 방법을 시도해 볼 수 있습니다.

코드 복사 코드는 다음과 같습니다.$User = M('CommonModel:User');
사용법을 변경하는 것은 실제로 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.$User = new CommonModel('User');

시스템의 모델 클래스는 자동으로 로드될 수 있으므로 인스턴스화하기 전에 클래스 라이브러리를 수동으로 가져올 필요가 없습니다. 모델 클래스 CommonModel은 Model을 상속해야 합니다. CommonModel 클래스에서 몇 가지 일반적인 논리적 메서드를 정의할 수 있으므로 각 데이터 테이블에 대해 특정 모델 클래스를 정의할 필요가 없습니다. 프로젝트에 이미 100개 이상의 데이터 테이블이 있는 경우 대부분은 기본입니다. CURD 작업의 경우 일부 모델에만 있습니다. 캡슐화해야 하는 복잡한 비즈니스 논리이므로 첫 번째 방법과 두 번째 방법을 조합하는 것이 좋습니다.


, 수신 테이블 접두사, 데이터베이스 및 기타 정보


M 메소드에는 세 개의 매개변수가 있습니다. 첫 번째 매개변수는 모델 이름(기본 모델 클래스 및 데이터베이스를 포함할 수 있음)이고, 두 번째 매개변수는 데이터 테이블의 접두사를 설정하는 데 사용됩니다(테이블 접두사를 사용하려면 비워 두세요). 세 번째 매개변수는 현재 사용되는 데이터베이스 연결 정보를 설정하는 데 사용됩니다(현재 프로젝트에서 구성된 데이터베이스 연결 정보를 가져오려면 공백으로 두십시오). 예:

코드 복사 코드는 다음과 같습니다.$User = M('db2.User',' 생각해요_') ;
Model 모델 클래스를 인스턴스화하고 db2 데이터베이스에서 think_user 테이블을 운영하는 것을 나타냅니다.
두 번째 파라미터가 비어 있거나 전달되지 않은 경우 현재 프로젝트 구성에서 데이터 테이블 접두사를 사용한다는 의미입니다. 운영 중인 데이터 테이블에 테이블 접두사가 없는 경우

코드 복사 코드는 다음과 같습니다.$User = M('db1.User',null );

Model 모델 클래스를 인스턴스화하고 db1 데이터베이스에서 사용자 테이블을 운영하는 것을 나타냅니다.
운영하는 데이터베이스에 다른 사용자 계정이 필요한 경우 데이터베이스 연결 정보를 전달할 수 있습니다. 예:

코드 복사 코드는 다음과 같습니다.
$User = M('User','think_' ,'mysql ://user_a:1234@localhost:3306/think');

Model은 기본 모델 클래스를 표현하기 위해 사용되며, think_user 테이블을 운영하고, user_a 계정을 이용하여 데이터베이스에 접속하며, 운영하는 데이터베이스는 think이다.
세 번째 연결 정보 매개변수는 DSN 구성 또는 어레이 구성을 사용할 수 있으며 구성 매개변수도 지원할 수 있습니다.
예를 들어 프로젝트 구성 파일에 구성됩니다.

코드 복사 코드는 다음과 같습니다.
'DB_CONFIG'=>'mysql://user_a :1234@ localhost:3306/think';

그런 다음 다음을 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
$User = M('User','think_' ,'DB_CONFIG');

기본 모델 클래스와 데이터베이스를 함께 사용할 수 있습니다. 예:

코드 복사 코드는 다음과 같습니다.
$User = M('CommonModel:db2.User' ,'생각_');

계층적 모델을 인스턴스화하려면 공개 모델 클래스를 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
M('UserLogic:User');

UserLogic을 인스턴스화하는 것은 별 의미가 없지만 을 사용할 수 있기 때문입니다.

코드 복사 코드는 다음과 같습니다.
D('User','Logic');

동일한 기능을 달성하십시오.

R 방식

R 메소드는 특정 컨트롤러의 동작 메소드를 호출하는데 사용되는데, 이는 A 메소드를 더욱 강화하고 보완한 것입니다. 방법 A의 사용법은 여기를 참조하세요.
R 메서드 호출 형식:
R('[프로젝트://][그룹/]모듈/작업','매개변수','컨트롤러 레이어 이름')
예를 들어 작업 방법을 다음과 같이 정의합니다.

코드 복사 코드는 다음과 같습니다.
class UserAction extends Action {
공개 함수 세부정보($id){
M('사용자')->find($id);
반환 }
}

그런 다음 R 메서드를 통해 다른 컨트롤러에서 이 작업 메서드를 호출할 수 있습니다. (일반적으로 R 메서드는 모듈 간 호출에 사용됩니다.)

코드 복사 코드는 다음과 같습니다.
$data = R('User/detail',array ('5'));

사용자 컨트롤러의 세부 메소드가 호출되고(세부 메소드는 공개 유형이어야 함) 반환 값이 ID 5의 사용자 데이터를 쿼리함을 나타냅니다. 호출하려는 연산 메서드에 매개변수가 없으면 두 번째 매개변수를 비워두고 직접 사용할 수 있습니다.

코드 복사 코드는 다음과 같습니다.
$data = R('User/detail');

또한 그룹 간 및 프로젝트 호출을 지원할 수도 있습니다. 예:

코드 복사 코드는 다음과 같습니다.
R('Admin/User/detail',array( '5' ));

Admin 그룹 아래 User 컨트롤러의 세부 메소드를 호출함을 나타냅니다.

코드 복사 코드는 다음과 같습니다.
R('Admin://User/detail', 배열(' 5'));

Indique l’appel de la méthode de détail du contrôleur utilisateur sous le projet Admin.
La recommandation officielle est de ne pas faire trop d'appels sur la même couche, ce qui entraînerait une confusion logique. Les parties appelées publiquement doivent être encapsulées dans des interfaces distinctes. Vous pouvez utiliser la nouvelle fonctionnalité du contrôleur multicouche 3.1 pour ajouter une couche de contrôleur distincte. pour l'appel d'interface, par exemple, nous ajoutons une couche de contrôleur Api,

Copier le code Le code est le suivant :
la classe UserApi étend l'action {
détail de la fonction publique ($id){
Retourner M('Utilisateur')->find($id);
>
>

Ensuite, utilisez l'appel de méthode R

Copier le code Le code est le suivant :

$data = R('Utilisateur/détail',array('5'),'Api');

En d'autres termes, le troisième paramètre de la méthode R prend en charge la spécification de la couche contrôleur de l'appel.
Dans le même temps, la méthode R peut prendre en charge le paramètre de suffixe d'opération C (« ACTION_SUFFIX ») lors de l'appel de la méthode d'opération. Si vous définissez le suffixe de la méthode d'opération, vous n'avez toujours pas besoin de modifier la méthode d'appel de la méthode R.

Méthode S

La méthode

S prend également en charge la transmission des paramètres de cache pour la méthode de mise en cache actuelle, par exemple :

Copier le code Le code est le suivant :

S('data',$Data,3600,'File',array('length'=>10,'temp'=>RUNTIME_PATH.'temp/'));

Après test, lorsqu'ils sont utilisés de cette manière, seuls les trois premiers paramètres sont valides et les autres ne sont pas valides
Copier le code Le code est le suivant :

{ 'Fichier',array('length'=>10,'temp'=>RUNTIME_PATH.'temp/')}

Enfin, utilisez-le de cette façon :
Copier le code Le code est le suivant :

S('data1',$list,array('prefix'=>aaa','expire'=>'3600','temp'=>RUNTIME_PATH.'temp/1236'));

Une fois obtenu :
Copier le code Le code est le suivant :

$sdata = S('data1','',array('prefix'=>'aaa','temp'=>RUNTIME_PATH.'temp/1236'));

Méthode T

Afin de générer des fichiers modèles plus facilement, la nouvelle version encapsule une fonction T pour générer des noms de fichiers modèles.
Utilisation :
T([Resource://][Module@][Theme/][Controller/]Opération,[Afficher la hiérarchie])
La valeur de retour de la fonction T est un nom de fichier modèle complet, qui peut être directement utilisé dans les méthodes d'affichage et de récupération pour le rendu de la sortie.
Par exemple :

Copier le code Le code est le suivant :

T('Public/menu');
// Retour au module actuel/View/Public/menu.html
T('bleu/Public/menu');
// Renvoie le module actuel/View/blue/Public/menu.html
T('Public/menu','Tpl');
// Renvoie le module actuel/Tpl/Public/menu.html
T('Public/menu');
// Si TMPL_FILE_DEPR vaut _ renvoie le module actuel/Tpl/Public_menu.html
T('Public/menu');
// Si TMPL_TEMPLATE_SUFFIX est .tpl, renvoie le module actuel/Tpl/Public/menu.tpl
T('Admin@Public/menu');
// Retour à Admin/View/Public/menu.html
T('Extend://Admin@Public/menu');
// Retour à Extend/Admin/View/Public/menu.html (Le répertoire Extend dépend de la configuration dans AUTOLOAD_NAMESPACE)

Utilisez la fonction T directement dans la méthode d'affichage :
Copier le code Le code est le suivant :

//Utilisez la fonction T pour générer le modèle
$this->display(T('Admin@Public/menu'));

T 함수는 다양한 보기 계층적 템플릿을 출력할 수 있습니다.

U 방식

U 메소드는 URL 주소 조합을 완료하는 데 사용됩니다. 해당 기능은 현재 URL 모드 및 설정을 기반으로 해당 URL 주소를 자동으로 생성할 수 있다는 것입니다.
U('주소','매개변수','의사 정적','점프 여부','도메인 이름 표시');

URL 주소를 수정하는 대신 템플릿에서 U 방식을 사용하면 환경이 바뀌거나 매개변수 설정이 변경되면 템플릿의 코드를 변경할 필요가 없다는 장점이 있습니다.

템플릿의 호출 형식은 {:U('address', 'parameter'...)}이어야 합니다

U 메소드 사용 예:

코드 복사 코드는 다음과 같습니다.

U('User/add') // User 모듈의 추가 연산 주소를 생성합니다

그룹 통화도 지원 가능:

코드 복사 코드는 다음과 같습니다.

U('Home/User/add') // Home 그룹의 User 모듈의 추가 작업 주소를 생성합니다

물론 현재 모듈 호출을 나타내는 작업 이름을 작성할 수도 있습니다.

코드 복사 코드는 다음과 같습니다.

U('add') // 현재 액세스 모듈의 추가 연산 주소를 생성합니다

그룹, 모듈 및 작업 이름 외에도 일부 매개변수를 전달할 수도 있습니다.

코드 복사 코드는 다음과 같습니다.

U('Blog/readid=1') // 블로그 모듈의 읽기 작업과 ID가 1인 URL 주소를 생성합니다

U 메서드의 두 번째 매개변수는 들어오는 매개변수를 지원하며 배열과 문자열이라는 두 가지 정의 방법을 지원합니다. 문자열 매개변수인 경우 첫 번째 매개변수에 정의할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

U('블로그/cate',array('cate_id'=>1,'status'=>1))
U('블로그/cate','cate_id=1&status=1')
U('블로그/catecate_id=1&status=1')

그러나 다음 정의 방법은 매개변수 전달이 허용되지 않습니다.

코드 복사 코드는 다음과 같습니다.

U('블로그/cate/cate_id/1/status/1')

프로젝트의 다양한 URL 설정에 따라 동일한 U 메서드 호출이 지능적으로 다양한 URL 주소 효과를 생성할 수 있습니다. 예:

코드 복사 코드는 다음과 같습니다.

U('블로그/readid=1')

이 정의는 예시입니다.
현재 URL이 일반 모드로 설정된 경우 마지막으로 생성된 URL 주소는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

현재 URL이 PATHINFO 모드로 설정된 경우 동일한 방법으로 생성된 최종 URL은 다음과 같습니다. http://serverName/index./Blog/read/id/1
현재 URL이 REWRITE 모드로 설정된 경우 동일한 방법으로 생성된 최종 URL은 http://serverName/Blog/read/id/1
입니다. PATHINFO 구분 기호도 설정한 경우:

코드 복사 코드는 다음과 같습니다.

'URL_PATHINFO_DEPR'=>'_'

생성됩니다

코드 복사 코드는 다음과 같습니다.

Si l'URL actuelle est définie sur le mode REWRITE et que le suffixe pseudo-statique est défini sur html, l'adresse URL finalement générée par la même méthode est :

Copier le code Le code est le suivant :

Si plusieurs supports pseudo-statiques sont définis, le premier suffixe pseudo-statique sera automatiquement ajouté à la fin de l'adresse URL. Bien entendu, vous pouvez également spécifier manuellement le suffixe pseudo-statique à générer dans la méthode U. , par exemple :

Copier le code Le code est le suivant :

U('Blog/lire','id=1','xml')

sera généré

Copier le code Le code est le suivant :

La méthode U peut également supporter le routage Si on définit une règle de routage :

Copier le code Le code est le suivant :

'news/:idd'=>'News/read'

Ensuite, vous pouvez l'utiliser

Copier le code Le code est le suivant :

U('/news/1')

L'adresse URL finale générée est :

Copier le code Le code est le suivant :

Si votre application implique l'exploitation d'adresses de plusieurs sous-domaines, vous pouvez également spécifier le nom de domaine qui doit générer l'adresse dans la méthode U, par exemple :

Copier le code Le code est le suivant :

Transmettez simplement le nom de domaine qui doit être spécifié après @.
De plus, si le cinquième paramètre de la méthode U est défini sur true, cela signifie que le nom de domaine actuel est automatiquement reconnu et que le nom de sous-domaine de l'adresse actuelle est automatiquement généré en fonction des paramètres de déploiement du nom de sous-domaine APP_SUB_DOMAIN_DEPLOY et APP_SUB_DOMAIN_RULES.
Si URL_CASE_INSENSITIVE est activé, les adresses URL en minuscules seront générées uniformément.

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