ThinkPHP-Quellcode-Lernmethode

WBOY
Freigeben: 2016-07-29 09:16:16
Original
1165 Leute haben es durchsucht

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:

I('Variablentyp.Variablenname ',['Standardwert' ],['Filtermethode'])

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参数

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.

Der offizielle Code lautet wie folgt:

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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage