Ich verstehe einige Dinge in meinem Studium nicht und die Suche ist nicht einfach, deshalb habe ich es hierher geschickt, um alle zu fragen.
Vielen Dank im Voraus für alle Antworten und Hilfe.
Wie im Titel:
<code>目前有 a.php b.php c.php 三个文件 </code>
Der a.php-Pseudocode lautet wie folgt:
<code><?php function say($key,$val){ global $array; $array[$key]=$val; extract($array); } function write($name){ include_once($name.".php"); } $action = $_GET['a'];//假设当前 url: a.php?a=b include_once($action.".php"); $action();</code>
Der b.php-Code lautet wie folgt
<code><?php function b(){ say("str","thinks"); write("c"); }</code>
c.php
<code><?php var_dump($str);</code>
Das zu erreichende Ziel besteht darin, dass der Variablenwert direkt in der C.PHP-Datei gelesen werden kann.
Die allgemeine Logik ist wie oben. Außerdem habe ich persönlich das Gefühl, dass dieser Teil dem Zuweisen/Anzeigen im Framework ähnelt, aber ich weiß nicht, wie ich ihn implementieren soll.
Der obige Code meldet einen Fehler: Notice: Undefined variable: str
Ich hoffe, ihr könnt mir einige Ratschläge (oder Schreibgewohnheiten usw.) geben.
Vielen Dank.
Ich verstehe einige Dinge in meinem Studium nicht und die Suche ist nicht einfach, deshalb habe ich es hierher geschickt, um alle zu fragen.
Vielen Dank im Voraus für alle Antworten und Hilfe.
Wie im Titel:
<code>目前有 a.php b.php c.php 三个文件 </code>
Der a.php-Pseudocode lautet wie folgt:
<code><?php function say($key,$val){ global $array; $array[$key]=$val; extract($array); } function write($name){ include_once($name.".php"); } $action = $_GET['a'];//假设当前 url: a.php?a=b include_once($action.".php"); $action();</code>
Der b.php-Code lautet wie folgt
<code><?php function b(){ say("str","thinks"); write("c"); }</code>
c.php
<code><?php var_dump($str);</code>
Das zu erreichende Ziel besteht darin, dass der Variablenwert direkt in der C.PHP-Datei gelesen werden kann.
Die allgemeine Logik ist wie oben. Außerdem habe ich persönlich das Gefühl, dass dieser Teil dem Zuweisen/Anzeigen im Framework ähnelt, aber ich weiß nicht, wie ich ihn implementieren soll.
Der obige Code meldet einen Fehler: Notice: Undefined variable: str
Ich hoffe, ihr könnt mir einige Ratschläge (oder Schreibgewohnheiten usw.) geben.
Vielen Dank.
global $array;
ändert nur den Bereich von $array, aber extract($array);
wird innerhalb der Funktion ausgeführt, sodass der Bereich von $str immer noch innerhalb der Funktion liegt. Sie können var_dump($arr[' str']) verwenden.
Was die beiden Sätze betrifft, die Sie gesagt haben: „Ich persönlich bin der Meinung, dass dieser Teil dem Zuweisen/Anzeigen im Framework ähnelt“ und „Aber ich weiß nicht, wie ich ihn umsetzen soll“, sind widersprüchlich Wie man es implementiert, dann wissen Sie, warum dieser Teil Ihrer Meinung nach dem Zuweisen/Anzeigen im Framework ähnelt?
Ihr Beispiel ist dasselbe, wenn Sie es mit der Klasse schreiben. Es ist nicht erforderlich, drei Dateien separat zu definieren, und es sieht komfortabel aus. Die von Ihnen verwendete Funktion zeigt jedoch, dass Sie nicht sehr gut objektorientiert denken können , und Ihre Schritte sind nicht stabil. Es macht sicherlich keinen Sinn, Ihnen etwas über Sprinttechniken zu erzählen.
Alle Variablen in
PHP
haben Gültigkeitsbereiche, die assign/display
und andere Formulare im Framework verwenden, die Sie sehen, indem Sie die extract
-Ausgabevariablen und die include
-Importvorlagendateien in denselben einfügen Funktion: Nur so kann der Variablenbereich konsistent sein und der Wert der Variablen kann aus der importierten Datei abgerufen werden. Was Ihre Schreibweise betrifft, teilen Sie die beiden Vorgänge in verschiedene Funktionen auf. Natürlich können sie nicht aufeinander zugreifen. Sagen Sie nicht, dass Sie den Wert der Variablen in c.php
erhalten möchten, Sie können ihn nicht direkt nach say("str","thinks");
erhalten.
Es scheint, dass Sie die Frage des globalen und internen variablen Funktionsumfangs nicht wirklich verstanden haben. Es empfiehlt sich, deren Konzepte bzw. Verwendung noch einmal zu prüfen!
Nach Ihrer Vorstellung ist $str in var_dump($str); der Parameter „str“ in extract($array); Tatsächlich soll var_dump zu diesem Zeitpunkt die Variable $str in erhalten sagen Funktion.
Was Sie tun, ist nichts weiter als:
<code>function a(){ $str = '123'; } a(); var_dump($str);</code>
Sie können $str nicht erhalten.