Heim > Artikel > Backend-Entwicklung > ThinkPHP-Quellcode-Lernmethode
Ich bin neu in PHP und arbeite gerade an einem Projekt, bei dem ich mehr über ThinkPHP lernen möchte. Deshalb habe ich mir bewusst den Quellcode von ThinkPHP angesehen und mir Notizen gemacht, um diese Dinge ohne Umschweife aufzuzeichnen. Lasst uns anfangen.
Offizielle Website-Beschreibung:
I-Methode ist ein neues Mitglied der vielen Ein-Buchstaben-Funktionen von ThinkPHP. Sein Name stammt vom englischen Input (. Es wird hauptsächlich verwendet, um Systemeingabevariablen bequemer und sicherer zu erhalten. Das Verwendungsformat ist wie folgt:
Der Variablentyp bezieht sich auf die Anforderungsmethode oder den Eingabetyp, einschließlich:
变量类型 | 含义 |
---|---|
get | 获取GET参数 |
post | 获取POST参数 |
param | 自动判断请求类型获取GET、POST或者PUT参数 |
request | 获取REQUEST 参数 |
put | 获取PUT 参数 |
session | 获取 $_SESSION 参数 |
cookie | 获取 $_COOKIE 参数 |
server | 获取 $_SERVER 参数 |
globals | 获取 $GLOBALS参数 |
Der offizielle Code lautet wie folgt:Hinweis: Bei Variablentypen wird die Groß-/Kleinschreibung nicht beachtet.
Bei Variablennamen muss die Groß-/Kleinschreibung strikt beachtet werden.
Standardwert und Filter-Methode sind optionale Parameter.
Funktion I($name,$default='',$filter=null,$datas=null) {
statisch $_PUT=null;//Verwenden Sie static, um ein statisches Element zu definieren, ein Klassenmitglied oder eine Methode als statisch zu deklarieren, und Sie können direkt darauf zugreifen, ohne die Klasse zu instanziieren. Auf statische Mitglieder (außer statischen Methoden) kann nicht über ein Objekt zugegriffen werden
if(strpos($name,'/')){ // Modifikator strpos( ) Funktion angeben ist um die Position zu finden, an der eine Zeichenfolge zum ersten Mal in einer anderen Zeichenfolge erscheint, und um die Position zu finden, an der „/“ zum ersten Mal im Parameternamen erscheint
list($name, $type) =explode('/',$name,2);//explode(separator,string,limit) Funktion bedeutet, eine Zeichenfolge entsprechend bestimmten Zeichen umzuwandeln. Unterbrechung ist ein Array, der Grenzwert ist die Anzahl der zurückgegebenen Arrays
}elseif(C('VAR_AUTO_STRING')){ // Standardmäßig wird eine Zeichenfolge // erzwungen. C-Methode von ThinkPHP aufrufen
$type = 's';
}
//Zusammenfassung Die Bedeutung dieses if besteht darin, zu bestimmen, ob der Parameter enthält/
if(strpos($name,'.')) { //Geben Sie die Parameterquelle an //Überprüfen Sie, ob bring.!
list($method,$name) = explosion('.',$name,2);
}else{ // Der Standardwert ist automatische Beurteilung
$method = 'param';
}
switch(strtolower($method)) { //strtolower() wandelt alle Zeichen in Kleinbuchstaben um und verwendet switch, um den Typ der Methode zu finden
case 'get' :
$input =& $_GET;
break;
case 'post' :
$input =& $_POST ;
break;
case 'put' :
if(is_null($_PUT)){ parse_str(file_get _contents('php ://input'), $ _PUT); >.
Pause ; case 'param' :
switch($_SERVER['REQUEST_METHOD']) { //$_SERVER['REQUEST_METHOD' Methode zu Rufen Sie den Methodennamen der Anfrage ab und verwenden Sie switch(), um den Methodentyp zu finden. Die Idee hier ist Rekursion > case 'PUT': :
;. '])){ $ depr = C('URL_PATHINFO_DEPR'); $input = explosion($depr,trim($_SERVER['PATH_INFO'],$depr)); break; case 'request': $input =& $_REQUEST; case 'session':
$input =& $_SESSION; case 'cookie': $input =& $_COOKIE;
>break;
case 'server' : $input =& $_SERVER; case 'globals' :
$input =& $GLOBALS;
case 'data' :
$input =& $datas; break;
default : null zurückgeben; }
if(''==$name) { // Alle Variablen abrufen
$data = $input;
$filters = isset($filter)?$filter:C('DEFAULT_FILTER');//Die Funktion des ternären Operators isset() wird im Allgemeinen verwendet, um zu erkennen, ob eine Variable gesetzt ist, und empty() wird verwendet, um zu bestimmen, ob sie leer ist
if($filters) {
if (is_string( $filters)){
using with $filters using using using using ’ through using ’ through ’ s using using ‐ ‐‐ ‐‐ ‐ to array_map_recursive($filter,$data ; Wertoperationen
$data (IS_STRING ($ FILTERS)) {
IF (0 === Strpos ($ Filters, '/')) {
IF (1! == Preg_match ($ Filters, (String) $ data)) { //preg_match() wird verwendet, um reguläre Ausdrücke abzugleichen
🎜> F>
IS_ARRAY ($ Filters)) {
Foreach ($ FILTERS As $ Filter) {
If (Function_exists ($ FILTER)) {
$ data = IS_ARAY ($ data)? array_map_recursive($filter,$data) : $filter($data); // Parameterfilterung
));
}
}
if(!empty($type)){//Verwenden Sie den Schalter, um den Typ des Typs zu bestimmen
switch(strtolower($type)){
case ' a':// Array
>Pause; $data =(float) $data;
break;
case 'b':// Boolean 's': // String
se{ // variabler Standardwert $data = isset($default)?$default:null; } is_array($data) && array_walk_recursive($data,'think_filter'); return $data; }
Die I-Methode wird hauptsächlich verwendet, um den vom Frontend an das Backend übergebenen Wert zu erhalten. Die Methode definiert vier Parameter, von denen nur einer erforderlich ist ist der zu erhaltende Name, die anderen können geändert werden.
Die oben rot markierten Punkte sind einige Wissenspunkte, die Sie beim Lesen des Codes beachten sollten. Funktion: Sicheres Abrufen der von der Eingabe übergebenen Parameter Implementierungsidee:
Wenn beim Senden der Typ befolgt wird, wird er gemäß dem angegebenen Typ If verarbeitet es wird nicht befolgt. Wenn der Typ oben angegeben ist, wird der Typ basierend auf Servervariablen bestimmt. Gewährleisten Sie die Sicherheit der übermittelten Daten durch Filterung. Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne die Erlaubnis des Bloggers reproduziert werden.
Das Obige stellt die Methode zum Erlernen des ThinkPHP-Quellcodes vor, einschließlich verschiedener Aspekte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.