Heim  >  Artikel  >  PHP-Framework  >  Lassen Sie uns darüber sprechen, wie der Befehl TP5.0.x den Filter ausführt!

Lassen Sie uns darüber sprechen, wie der Befehl TP5.0.x den Filter ausführt!

藏色散人
藏色散人nach vorne
2022-01-27 17:16:092537Durchsuche

In der folgenden Tutorial-Kolumne zum thinkphp-Framework erfahren Sie, wie Sie den Filter mit dem Befehl Thinkphp5.0.x ausführen. Ich hoffe, dass er Freunden in Not hilfreich sein wird!

Thinkphp5.0.x-Befehlsausführung

verwendet auch

für die Befehlsausführung und führt es in der Funktion filterValue der Request-Klasse aus [Empfehlung: <span style="color:#c7254e;">call_user_func()</span>Thinkphp-Video-Tutorial]

Suchen Sie zuerst, welche Funktionen filterValue aufrufen:

FilterValue() wurde in den Funktionen cookie() und input() in der Request-Klasse aufgerufen.

Suche nach Cookie-Funktionsaufrufen, aber es wurden keine Ergebnisse gefunden. Suche nach Eingabeaufrufen:

Nachverfolgung der Ausführungsfunktion:

Schritt 1

in

$request = is_null($request) ? Request::instance () : $request ;

führt den Anforderungskonstruktor aus. Zu diesem Zeitpunkt wurde der POST-Inhalt über file_get_contents('php://input') im Konstruktor abgerufen und der Variablen $request->input zugewiesen ??

,

$config

)

;

at In routeCheck wird die Prüffunktion der Route-Klasse eingetragen: Die Prüffunktion ruft $request->method() auf: Der Standardwert des eingehenden Parameters ist false, und es wird ausgeführt, um var_method => _method zu erhalten. Wenn __construct zu diesem Zeitpunkt übergeben wird, erhält $ _POST die per Post übermittelten Daten und das POST-Array kann durchlaufen werden Die Konstruktfunktion zum Überschreiben der Mitglieder in der Anforderungsklasse

Verfolgen Sie die Parameterfunktion:

/**

       * Parameter der aktuellen Anfrage abrufen

     * @access public

      * @param string|array $name Variablenname

      * @param gemischt                                                                                                                    

* @return gemischt

*/

Geben Sie zuerst die if-Bedingung ein und verfolgen Sie die Methode method

method(), wenn der eingehende Parameter wahr ist :

Führen Sie die folgende Anweisung aus: Holen Sie sich den ursprünglichen Anforderungstyp

$_SERVER

['REQUEST_METHOD'], der Rückgabewert ist POST

und geben Sie ihn an param, $method=POST

zurück

damit der Wechsel ausgeführt wird Geben Sie im POST-Teil die Post-Funktion ein:

Post-Funktion:

/**​​​​

* @return gemischt

*/

Übergeben Sie die Parameter:

, dann nach $content kopieren und dann $_POST Und beurteilen Sie, ob es im JSON-Format vorliegt. Wenn es sich um JSON handelt, müssen Sie json_decode ausführen, andernfalls verwenden Sie direkt den Wert von $_POST

, um die Eingabemethode einzugeben : Der eingehende Parameter ist der durch POST erhaltene

Name. Wenn er falsch ist, gibt die Eingabe Daten zurück und post() gibt direkt die Funktion

param() zurück:

$vars

=

$this

->

post

(

false); GetFilter eingeben: In

getFilter, $filter = $filter ?: $this->filter;ruft den Filtervariablenwert der $request-Klasse ab (zuvor durch Konstruktdurchquerung abgedeckt). ) und als Rückgabewert an die Eingabefunktion

weiterhin array_walk_recursive($data, [$this, 'filterValue') ausführen ] , $filter );

array_walk_recursive() Funktion wendet eine benutzerdefinierte Funktion auf jedes Element im Array an. In der Funktion sind der Schlüsselname und der Schlüsselwert des Arrays Parameter

, was $filters=systemtaken entspricht. Jede Variable in $data wird als $value übergeben . Wenn ccc=ipconfig verwendet wird, wird system als erster Parameter von call_user_func und ipconfig als zweiter Parameter verwendet, was die Befehlsausführung bewirkt.

Ausführungsergebnis:

Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie der Befehl TP5.0.x den Filter ausführt!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen