Heim > Backend-Entwicklung > PHP-Tutorial > Ein Problem mit global und include in PHP

Ein Problem mit global und include in PHP

WBOY
Freigeben: 2016-08-04 09:22:04
Original
1099 Leute haben es durchsucht

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

Der b.php-Code lautet wie folgt

<code><?php
function b(){
    say("str","thinks");
    write("c");
}</code>
Nach dem Login kopieren
Nach dem Login kopieren

c.php

<code><?php
var_dump($str);</code>
Nach dem Login kopieren
Nach dem Login kopieren

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.

Antwortinhalt:

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

Der b.php-Code lautet wie folgt

<code><?php
function b(){
    say("str","thinks");
    write("c");
}</code>
Nach dem Login kopieren
Nach dem Login kopieren

c.php

<code><?php
var_dump($str);</code>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren

Sie können $str nicht erhalten.

Verwandte Etiketten:
php
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