Variablen inerhalb und außerhalb von Funktionen
theSnowOne
- php
0 lulu0 theSnow
0 André Laugks
Hallo an alle Forumer und Forumerinnen!
Ich wünsche Euch einen wunderschönen Guten Morgen!
Gibt es noch eine andere Möglichkeit auf Variablen außerhalb einer Funktion innerhalb einer Funktion anzusprechen als diese beim aufruf mit zu übergeben!?!??!??!
Na wenn man das verstehen soll?!?!? ;o)
Nochmal:
$test = "Hallo";
funktion gib_was_aus($test)
{
echo $test." ;o)"; // Gibt 'Hallo ;o)' aus
}
So will ich das aber nicht.....
$test = "Hallo";
funktion gib_was_aus()
{
echo $test." ;o)"; // Gibt ';o)' aus ;o(
}
So geht das nicht....
Gibt es dafür noch eine andere Lösung?
Sorry für so ne dähmliche Frage, aber ich hab daruber was gesucht aber nix gefunden....
T H X !
MfG
TheSnow
Hi snow
Du kannst eine Variable für ein Funktion "sichtbar" machen indem Du sie auf global setzt.
$meine_variable="HAllo";
function hello()
{
global $meine_variable;
echo $meine_variable;
}
bye lulu
Hi snow
Du kannst eine Variable für ein Funktion "sichtbar" machen indem Du sie auf global setzt.
$meine_variable="HAllo";
function hello()
{
global $meine_variable;
echo $meine_variable;
}
bye lulu
Thx!
theSnow
Hallo!
$test = "Hallo";
funktion gib_was_aus()
{
echo $test." ;o)"; // Gibt ';o)' aus ;o(
}
So geht das nicht....
So mußt Du test innerhalb der Funktion bekannt machen.
http://www.php.net/manual/de/language.variables.scope.php
MfG, André Laugks
So mußt Du test innerhalb der Funktion bekannt machen.
http://www.php.net/manual/de/language.variables.scope.php
Thx!
Grüssi
Ich hätte da auch ne Frage zu Scoping:
$test = "Hallo";
funktion gib_was_aus()
{
echo $test." ;o)"; // Gibt ';o)' aus ;o(
}
So geht das nicht....
So mußt Du test innerhalb der Funktion bekannt machen.
http://www.php.net/manual/de/language.variables.scope.php
Ich hab da ein ähnliches Problem, wollte zwar keinen eigenen Thread aufmachen, nun ist die Verlockung aber gross, mich hier thematisch einfach anzuhängen:
class Menu {
var $MenuID;
var $expand_all;
var $file;
function Menu() { [...] }
function ParseMenu () {
// trifft expat auf ein sich öffnendes Tag wird diese Fkt. aufgerufen
function startTag($parser, $name, $attrs) {
echo $this->MenuID;
}
// trifft er auf ein schliessendes Tag, dann diese Fkt.
function endTag($parser, $name) { [...] }
$xp = xml_parser_create();
// Hier werden die beiden Funktionen mit Expat verknüpft
xml_set_element_handler($xp, "startTag", "endTag");
[...]
}
}
$m = new Menu;
$m->ParseMenu();
Ich kann in der inneren Funktion (startTag) nicht auf die Instanzvariable $MenuID zugreifen! In der äusseren (ParseMenu) allerdings schon! Die Verschachtelung muss aus unerfindlichen Gründen sein, da expat sonst die Handlerfunktionen ("startTag" und "endTag") nicht als solche erkennt, wenn ich sie als normale Methoden definiere. auch kann ich an die inneren (Handler-)Funktionen keine zusaätzlichen Parameter übergeben, es handelt sich um von PHP zur Verfügung gestellte Interfaces.
Bin schon kurz vorm aufgeben, ergo umschreiben des gesamten Konzepts. Wäre also echt dankbar für Anregungen!
lg bernhard
Hallo!
class Menu {
var $MenuID;
var $expand_all;
var $file;
function ParseMenu () {
// trifft expat auf ein sich öffnendes Tag wird diese Fkt. aufgerufen
function startTag($parser, $name, $attrs) {
echo $this->MenuID;
}
Klassen würde ich nicht zu meinem Spezialgebiet zählen. Innerhalb einer Klasse benötigt man doch kein global.
IMHO, vielleicht mußt Du die Variable in die übergeordnete Funktion holen. Hast Du mal versucht global anzuwenden.
var $MenuID;
var $expand_all;
var $file;
var $innerMenuID
function ParseMenu () {
$this->innerMenuID = $this->MenuID;
function startTag($parser, $name, $attrs) {
echo $this->innerMenuID;
}
Oliver Lehmann ist glaube Klassenspezialist. Vielleicht kannst Du den ja mal freundlich anschreiben :-).
MfG, André Laugks
Grüssi Andre,
IMHO, vielleicht mußt Du die Variable in die übergeordnete Funktion holen. Hast Du mal versucht global anzuwenden.
Ich habs auch schon so probiert:
function ParseMenu () {
$mid = $this->MenuID;
function startTag($parser, $name, $attrs) {
global $mid;
echo $mid;
}
}
klappt auch nicht :-( Was gehen würde, wäre $mid *wirklich* global zu machen, also ausserhalb der Klasse zu stellen, aber das würde imho den ganzen Zweck einer Klassenkonstruktion untergraben!
Gibts vielleicht irgendein keyword, mit dem man eine Variable nach unten hin (scopemässig) freigeben kann?
Oliver Lehmann ist glaube Klassenspezialist. Vielleicht kannst Du den ja mal freundlich anschreiben :-).
hmmm, diese Option werde ich mir offenlassen ;-) Aber erstmal abwarten, vielleicht liest er ja eh mit!
danke,
bernhard