Sponsor-Board.de
Thema geschlossen  Thema schreiben 

PHP nested functions

Verfasser Nachricht

Beiträge: 207
Bewertung: 6
Registriert seit: Jul 2012
Status: offline


Beitrag: #1
PHP nested functions

Hallo alle zusammen,


ich spiel mich grad bei PHP mit verschachtelten Funktionen herum, und bin auf eine, meines Erachtens nach, unlogische Eigenschaft gestoßen, und wollte fragen ob jemand von euch weiß wieso das so ist.

Und zwar habe ich folgenden Code

PHP-Code:
function baum($test){
    function 
f1(){
        return 
"f1 wurde aufgerufen";
    }
    
    function 
f2(){
        return 
"testausgabe " f1();
    }
    
    echo 
f2();

    include 
"test.php";
}
baum("testtext"); 


Die Datei test.php sieht so aus:

PHP-Code:
<h1>Überschrift</h1>
<?
php echo f1(); ?>


Die Ausgabe im Browser sieht folgendermaßen aus:

testausgabe f1 wurde aufgerufen
Überschrift
Fatal error: Call to undefined function f1 in ....

Und genau das verstehe ich nicht, wieso die Funktionen f1 und f2 von der inkludierten Datei nicht aufrufbar sind, Variablen jedoch schon. Also wenn ich die Funktionen f1 und f2 auf die Art

PHP-Code:
$f1 = function(){...} 

deklariere, und ich dann $f1() schreibe, funktioniert es so wie gewünscht.

Kann mir jemand erklären wieso es so funktioniert?


LG, David S.


[Link: Registrierung erforderlich]

23.03.2015 21:58
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden

Beiträge: 268
Bewertung: 11
Registriert seit: Sep 2013
Status: offline


Beitrag: #2
RE: PHP nested functions

Ich arbeite nicht so oft(eher nicht) mit verschachtelte Funktionen. Aber so weit ich weiß sind die Funktionen nicht von aussen aufrufbar es sei denn es wurde vorher die Hauptfunktion ausgeführt. Das heißt würdest du das include unter die Funktion

Code:
baum("testtext");

setzen sollte es gehen. Ich weiß jetzt nur nicht genau wie das include in einer Funktion gehandelt wird.


Eventuell kann dir jemand eine bessere Antwort geben als ich, ich arbeite lieber mit Klassen Biggrin


[Link: Registrierung erforderlich]

[Link: Registrierung erforderlich]

Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2015 22:32 von -superfarmer1995.

23.03.2015 22:27
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden

Beiträge: 764
Bewertung: 68
Registriert seit: Apr 2011
Status: offline


Beitrag: #3
RE: PHP nested functions

Eine Funktion in einer Funktion? Biggrin

Ich denke du versuchst eine Klasse zu erstellen, aber das müsste so aussehen:

Zitat:
class baum {
public $name;
.
.
.
public function f1() {
.
.
.
}
}



test.php:

Zitat:
include baum.class.php;
$baum = new baum();
echo $baum->f1();


[Link: Registrierung erforderlich]
Sascha Händler, Laufenstr. 65
Internet: [Link: Registrierung erforderlich]
Tel.: +49-2472-99580-10
Support: helpdesk [at] kts24.com

Dieser Beitrag wurde zuletzt bearbeitet: 24.03.2015 10:34 von RapToN.

24.03.2015 10:33
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden

Beiträge: 408
Bewertung: 9
Registriert seit: Apr 2011
Status: offline


Beitrag: #4
RE: PHP nested functions

als kleinen denkanstoß noch das [Link: Registrierung erforderlich]

Dieser Beitrag wurde zuletzt bearbeitet: 24.03.2015 11:30 von Stricted.

24.03.2015 11:29
 
Alle Beiträge dieses Benutzers finden

Beiträge: 207
Bewertung: 6
Registriert seit: Jul 2012
Status: offline


Beitrag: #5
RE: PHP nested functions

Hallo,


danke für eure Antworten. Bin von einer Logik ausgegangen wie sie in Javascript vorhanden ist, jedoch scheint dies bei php nicht der Fall zu sein -> geschachtelte Funktionen werden nach dem Funktionsaufruf wie public functions behandelt.

@rapton, eine Klasse könnte das Problem in der Praxis evt. umgehen, jedoch war das nur eine Spielerei


[Link: Registrierung erforderlich]

25.03.2015 19:47
 
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Thema geschlossen  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  PHP Functions Kiwie 1 1.086 17.03.2014 12:23
Letzter Beitrag: Aaron

 Druckversion anzeigen
 Thema einem Freund senden
 Thema abonnieren
 Thema zu den Favoriten hinzufügen

Sponsor-Board.de

Community
Über uns
Partner
Powered by Mybb: Copyright 2002-2024 by MyBB Group - Deutsche-Übersetzung von Mybb.de
 
© 2007-2024 Sponsor-Board.de - Hosted by OVH

Willkommen auf SB!   Sie benötigen ein Sponsoring?   1. Anmelden   2. Sponsoring-Anfrage erstellen   3. Nachrichten von Sponsoren erhalten   Kostenlos!   Jetzt registrieren