2011-01-08 2 views
1

Szenario: Ich habe einen benutzerdefinierten Block in Drupal 6.20 unter PHP 5.2.14 definiert. Ich habe PHP-Code aktiviert, und ich bin versucht, etwas zu tun:Warum können in Drupal-Blöcken definierte Funktionen nicht auf Globals zugreifen?

<?php 
    $a = "success"; 

    function test() { 
    global $a; 

    print $a; 
    } 

    test(); 
?> 

Er druckt nichts auf meinem System, weil ich nicht an Umfang Variable $ a scheinen kann. Ich habe auch $ GLOBALS ['a'] vergeblich versucht. Was gibt? Ich fühle mich wie verrückt.

Mit dem globalen Schlüsselwort im äußeren Bereich können Sie glücklicherweise drupal's globals verfügbar machen.

Antwort

1

Ich bin nicht sehr vertraut mit Drupal, aber ich vermute, dass die Blöcke irgendwo in einer anderen Funktion/Methode enthalten sind, so dass Sie effektiv mit einer geschachtelten Funktion beschäftigen, die in der lokalen Bereich der äußeren Funktion enthalten ist .

Damit ist es sinnvoll, dass $a = "success" nicht innerhalb der test() Funktion angesprochen werden kann.

Wenn ich recht habe, sollte es funktionieren, wenn Sie das global Schlüsselwort auf beide Bereiche schlagen.

+0

Sie haben recht, Sir! Danke, dass du mir geholfen hast, hier ein wenig Verstand zu finden. – mkoistinen

+0

@mkoistinen du bist willkommen, ich habe auch meine Haare darüber gezogen. –