Maison  >  Article  >  développement back-end  >  Guide d'utilisation de la fonction Thinkphp à lettre unique_php conseils

Guide d'utilisation de la fonction Thinkphp à lettre unique_php conseils

WBOY
WBOYoriginal
2016-05-16 09:00:201821parcourir

Méthode A

Une méthode est utilisée pour instancier le contrôleur en interne, appelant le format : A('[project://][group/]module','controller layer name')
L'utilisation la plus simple :

Copier le code Le code est le suivant :
$User = A('User');

signifie instancier le contrôleur UserAction du projet en cours (le fichier correspondant à ce contrôleur se trouve dans Lib/Action/UserAction.class. Si le mode groupe est adopté et que vous souhaitez instancier un autre contrôleur de groupe Admin, vous pouvez). utiliser :

Copier le code Le code est le suivant :
$User = A('Admin/User');

L'instanciation inter-projets est également prise en charge (les répertoires de projets doivent rester au même niveau)

Copier le code Le code est le suivant :
$User = A('Admin://User' );

représente l'instanciation du contrôleur UserAction sous le projet Admin
La version .1 ajoute la prise en charge des contrôleurs hiérarchiques, vous pouvez donc également utiliser la méthode A pour instancier d'autres contrôleurs, par exemple :

Copier le code Le code est le suivant :
$User = A('User','Event) ;

Instancier le contrôleur UserEvent (le fichier correspondant se trouve dans Lib/Event/UserEvent.class.).
Après avoir instancié un contrôleur, vous pouvez appeler des méthodes dans le contrôleur. Cependant, il convient de noter que lors d'un appel entre projets, si votre méthode d'opération comporte des opérations de variables spéciales pour le contrôleur actuel, il y aura donc des inconnues, d'une manière générale. recommandons que la couche contrôleur qui nécessite des appels publics soit développée séparément sans trop de dépendances.

Méthode B

Il s'agit d'une nouvelle fonction qui naît avec le comportement et peut exécuter un certain comportement, tel que

Copier le code Le code est le suivant :
B('app_begin');

Autrement dit, avant le démarrage du projet, toutes les fonctions définies par ce comportement sont exécutées. Prend en charge 2 paramètres, le deuxième paramètre doit accepter un tableau, tel que

Copier le code Le code est le suivant :
B('app_begin',array("name"= & gt; "tdweb","time"=>time()));

Méthode C

La méthode C est la méthode utilisée par Think pour définir, obtenir et enregistrer les paramètres de configuration, et est utilisée plus fréquemment.
Pour comprendre la méthode C, vous devez d'abord comprendre la configuration de Think, car toutes les opérations de la méthode C sont liées à la configuration. Le fichier de configuration de Think est défini au format tableau.
En raison de la conception de surcharge de fonctions, il existe de nombreuses utilisations. Expliquons-les une par une.
Définir les paramètres

Copier le code Le code est le suivant :
C('DB_NAME','think');

Indique que la valeur du paramètre de configuration DB_NAME est définie sur think. Puisque les paramètres de configuration ne sont pas sensibles à la casse, la méthode d'écriture suivante est la même :

Copier le code Le code est le suivant :
C('db_name','think');

Cependant, il est recommandé de conserver les spécifications de définition de configuration en lettres majuscules uniformes.
Tous les paramètres du projet peuvent être modifiés dynamiquement via cette méthode avant de prendre effet. La dernière valeur définie écrasera les paramètres ou définitions précédents dans la configuration conventionnelle. Vous pouvez également utiliser la méthode de configuration des paramètres pour ajouter de nouvelles configurations.
Prend en charge le réglage de paramètres de configuration secondaires, tels que :

Copier le code Le code est le suivant :
C('USER.USER_ID',8);

Il n'est pas recommandé de configurer les paramètres au-delà du niveau deux.
Si vous souhaitez définir plusieurs paramètres, vous pouvez utiliser les paramètres par lots, par exemple :

Copier le code Le code est le suivant :
$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('utilisateur/*',NULL);

Ou utilisez des conditions de filtre pour supprimer, par exemple :

Copier le code Le code est le suivant :
F('user/[^a]*', NULL);

Méthode G

Les fonctions que Thinkphp exigeait depuis longtemps d'être complétées via les méthodes debug_start, debug_end et même la classe Debug ont été remplacées par une simple méthode G dans la version 3.1, qui est une superbe mise à niveau.
La fonction de la méthode G comprend deux fonctions : le marquage de la position et les statistiques d'intervalle. Jetons un coup d'œil à l'utilisation spécifique :
. Marquer l'emplacement
La première utilisation de la méthode G est de marquer la position, par exemple :

Copier le code Le code est le suivant :
G('begin');

Indique que la position actuelle est marquée comme balise de début et que le temps d'exécution de la position actuelle est enregistré si l'environnement le prend en charge, l'utilisation de la mémoire peut également être enregistrée. Les marqueurs de la méthode G peuvent être appelés n’importe où.
Statistiques de temps d'exécution
Après avoir marqué la position, nous pouvons appeler à nouveau la méthode G pour effectuer des statistiques d'intervalle, par exemple :

Copier le code Le code est le suivant :
G('begin');
// ...Autres extraits
G('fin');
// ...peut-être qu'il y a un autre code ici
// Réaliser un intervalle statistique
echo G('begin','end').'s';

G('begin','end') signifie compter le temps d'exécution de la position de début à la position de fin (l'unité est en secondes). Le début doit être une position marquée. Si la position de fin n'a pas été marquée à ce moment, elle le sera. Marquez automatiquement la position actuelle comme balise de fin et le résultat de sortie est similaire à :

Copier le code Le code est le suivant :
0,0056s

La précision statistique par défaut est de 4 décimales. Si vous estimez que cette précision statistique n'est pas suffisante, vous pouvez également la définir comme : .

Copier le code Le code est le suivant :
G('begin','end',6) .'s';

Le résultat possible deviendrait :

Copier le code Le code est le suivant :
0.005587s

Statistiques de surcharge de mémoire
Si votre environnement prend en charge les statistiques d'utilisation de la mémoire, vous pouvez également utiliser la méthode G pour effectuer des statistiques de surcharge de mémoire par intervalles (unité : Ko), par exemple :

Copier le code Le code est le suivant :
echo G('begin','end',' m').'kb';

Le troisième paramètre utilise m pour représenter les statistiques de surcharge de mémoire. Le résultat de sortie peut être : .

Copier le code Le code est le suivant :
625ko

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}

pour afficher la définition du langage.

Méthode M

La méthode M est utilisée pour instancier une classe de modèle de base. La différence avec la méthode D est :
, pas besoin de personnaliser les classes de modèles, de réduire le chargement des E/S et d'avoir de meilleures performances
 ; , seules les méthodes de la classe de modèle de base (la classe par défaut est la classe Model) peuvent être appelées après l'instanciation
 ; , vous pouvez spécifier le préfixe de la table, la base de données et les informations de connexion à la base de données lors de l'instanciation
; La puissance de la méthode D se reflète dans la puissance de la classe de modèle personnalisée que vous encapsulez. Cependant, à mesure que les classes de modèle de base de la nouvelle version du framework Think deviennent de plus en plus puissantes, la méthode M devient de plus en plus pratique. la méthode D.
Format d'appel de la méthode M :
M('[Nom du modèle de base :]Nom du modèle','Préfixe de la table de données','Informations de connexion à la base de données')
Jetons un coup d'œil aux utilisations spécifiques de la méthode M :
, instanciez la classe modèle de base (Model)
Lorsqu'aucun modèle n'est défini, nous pouvons utiliser la méthode suivante pour instancier une classe de modèle pour l'opération :

Copier le code Le code est le suivant :
//Instancier le modèle utilisateur
$Utilisateur = M('Utilisateur');
//Effectuer d'autres opérations sur les données
$Utilisateur->select();

Cette méthode est la plus simple et la plus efficace, car elle ne nécessite pas de définir de classes de modèle et prend donc en charge les appels inter-projets. L'inconvénient est également qu'il n'existe pas de classe de modèle personnalisée, de sorte que la logique métier appropriée ne peut pas être écrite et que seules les opérations CURD de base peuvent être effectuées.

Copier le code Le code est le suivant :
$User = M('User');

En fait équivalent à :

Copier le code Le code est le suivant :
$User = new Model('User');

Indique le fonctionnement de la table think_user. La méthode M possède également une fonction singleton comme la méthode D, et elle ne sera pas instanciée à plusieurs reprises si elle est appelée plusieurs fois. Le paramètre de nom de modèle de la méthode M sera automatiquement converti en minuscules lors de la conversion en table de données, ce qui signifie que la spécification de dénomination de la table de données de Think est dans un format entièrement en minuscules.
, instanciez d'autres classes de modèles publics
La première méthode d'instanciation n'a pas de définition de classe de modèle, il est donc difficile d'encapsuler certaines méthodes logiques supplémentaires. Cependant, dans la plupart des cas, vous devrez peut-être simplement étendre une logique commune, vous pouvez alors essayer la méthode suivante.

Copier le code Le code est le suivant :
$User = M('CommonModel:User');

Changer l'usage équivaut en fait à :

Copier le code Le code est le suivant :
$User = new CommonModel('User');

Étant donné que les classes de modèles du système peuvent être automatiquement chargées, nous n'avons pas besoin d'importer manuellement la bibliothèque de classes avant l'instanciation. La classe de modèle CommonModel doit hériter de Model. Nous pouvons définir certaines méthodes logiques communes dans la classe CommonModel, ce qui élimine le besoin de définir des classes de modèles spécifiques pour chaque table de données. Si votre projet contient déjà plus de 100 tables de données, la plupart d'entre elles sont basiques. Pour les opérations CURD, seuls certains modèles en ont. une logique métier complexe qui doit être encapsulée, donc la combinaison de la première méthode et de la deuxième méthode est un bon choix.

, préfixe de table entrante, base de données et autres informations

La méthode M a trois paramètres. Le premier paramètre est le nom du modèle (peut inclure des classes de modèles de base et des bases de données), et le deuxième paramètre est utilisé pour définir le préfixe de la table de données (laissez-le vide pour prendre le préfixe de la table). de la configuration actuelle du projet). Le troisième paramètre est utilisé pour définir les informations de connexion à la base de données actuellement utilisées (laissez-le vide pour prendre les informations de connexion à la base de données configurées par le projet en cours), par exemple :

Copier le code Le code est le suivant :
$User = M('db2.User',' pense_') ;

Représente l'instanciation de la classe de modèle Model et l'exploitation de la table think_user dans la base de données DB2.
Si le deuxième paramètre est laissé vide ou n'est pas transmis, cela signifie utiliser le préfixe de la table de données dans la configuration actuelle du projet. Si la table de données exploitée n'a pas de préfixe de table, vous pouvez utiliser : .

Copier le code Le code est le suivant :
$User = M('db1.User',null );

Représente l'instanciation de la classe de modèle Model et l'exploitation de la table utilisateur dans la base de données db1.
Si la base de données que vous exploitez nécessite différents comptes d'utilisateurs, vous pouvez transmettre les informations de connexion à la base de données, par exemple :

Copier le code Le code est le suivant :
$User = M('User','think_' ,'mysql ://user_a:1234@localhost:3306/think');

Model est utilisé pour représenter la classe de modèle de base, puis la table think_user est exploitée, le compte user_a est utilisé pour se connecter à la base de données et la base de données d'exploitation est think.
Le troisième paramètre d'informations de connexion peut utiliser la configuration DSN ou la configuration de baie, et peut même prendre en charge les paramètres de configuration.
Par exemple, configuré dans le fichier de configuration du projet :

Copier le code Le code est le suivant :
'DB_CONFIG'=>'mysql://user_a :1234@localhost:3306/think';

Ensuite vous pouvez utiliser :

Copier le code Le code est le suivant :
$User = M('User','think_' ,'DB_CONFIG');

Les classes de modèles de base et les bases de données peuvent être utilisées ensemble, par exemple :

Copier le code Le code est le suivant :
$User = M('CommonModel:db2.User' ,'think_ ');

Si nous voulons instancier un modèle hiérarchique, nous pouvons utiliser la classe de modèle public :

Copier le code Le code est le suivant :
M('UserLogic:User');

pour instancier UserLogic, même si cela n'a pas beaucoup de sens, car vous pouvez utiliser

Copier le code Le code est le suivant :
D('User','Logic');

réaliser la même fonction.

Méthode R

La méthode R est utilisée pour appeler la méthode de fonctionnement d'un certain contrôleur, ce qui constitue une amélioration et un complément supplémentaires de la méthode A. Voir ici pour l'utilisation de la méthode A.
Format d'appel de la méthode R :
R('[Projet://][Groupe/]Module/Opération','Paramètres','Nom de la couche du contrôleur')
Par exemple, nous définissons une méthode d'opération comme :

Copier le code Le code est le suivant :
class UserAction extends Action {
détail de la fonction publique ($id){
Retourner M('Utilisateur')->find($id);
>
>

Ensuite, vous pouvez appeler cette méthode d'opération dans d'autres contrôleurs via la méthode R (généralement la méthode R est utilisée pour les appels inter-modules)

Copier le code Le code est le suivant :
$data = R('Utilisateur/détail',array ('5'));

Indique que la méthode de détail du contrôleur utilisateur est appelée (la méthode de détail doit être de type public) et que la valeur de retour consiste à interroger des données utilisateur avec l'ID 5. Si la méthode d'opération que vous souhaitez appeler n'a aucun paramètre, le deuxième paramètre peut être laissé vide et utilisé directement :

Copier le code Le code est le suivant :
$data = R('User/detail');

Il peut également prendre en charge les appels inter-groupes et projets, par exemple :

Copier le code Le code est le suivant :
R('Admin/User/detail',array( '5' ));

Indique l’appel de la méthode de détail du contrôleur utilisateur sous le groupe Admin.

Copier le code Le code est le suivant :
R('Admin://Utilisateur/détail', tableau(' 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'=>'_'

생성됩니다

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

현재 URL이 REWRITE 모드로 설정되고 의사 정적 접미사가 html로 설정된 경우 동일한 방법으로 최종 생성된 URL 주소는 다음과 같습니다.

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

여러 개의 의사 정적 지원이 설정된 경우 첫 번째 의사 정적 접미사가 URL 주소 끝에 자동으로 추가됩니다. 물론 U 메서드에서 생성할 의사 정적 접미사를 수동으로 지정할 수도 있습니다. , 예:

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

U('블로그/읽기','id=1','xml')

생성됩니다

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

라우팅 규칙을 정의하면 U 방법도 라우팅을 지원할 수 있습니다.

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

'뉴스/:idd'=>'뉴스/읽기'

그럼 사용하시면 됩니다

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

유('/뉴스/1')

최종 생성된 URL 주소는 다음과 같습니다.

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

애플리케이션에 여러 하위 도메인의 작업 주소가 포함된 경우 U 메서드에서 주소를 생성하는 데 필요한 도메인 이름을 지정할 수도 있습니다. 예:

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

@ 뒤에 지정해야 하는 도메인 이름을 전달하면 됩니다.
또한, U 메소드의 다섯 번째 파라미터를 true로 설정하면 현재 도메인 이름이 자동으로 인식된다는 의미이며, 하위 도메인 이름 배포 설정인 APP_SUB_DOMAIN_DEPLOY, APP_SUB_DOMAIN_RULES에 따라 현재 주소의 하위 도메인 이름이 자동 생성됩니다.
URL_CASE_INSENSITIVE를 켜면 소문자 URL 주소가 균일하게 생성됩니다.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn