Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 06. Januar 2012 05:59

Klener
probiert CMS/ms aus
Registriert: 15. November 2011
Beiträge: 45
Webseite

[PHP] globals funktionieren in Funktion nicht?

Guten Morgen,
ich bin hier grad schier am Verzweifeln!

Ich versuche gerade in meiner Datei "action.default.php", welche für die Ausgabe zuständig ist, wenn das Tag {WPPosts} aufgerufen wird, eine neue Funktion zu "basteln".
Das sollte ja auch eigentlich kein Problem sein, aaaaber: Es scheint, als wollen die globals nicht funktionieren?
Entweder ich seh' den Wald vor lauter Bäumen nicht mehr, oder hier stimmt etwas nicht...

Mein Code sieht in etwa so aus:

[== PHP ==]
<?php
if (!isset($gCms)) exit;

    // get params
    $blogurl = $params['blogurl'];
        echo $blogurl; // funktioniert
    neu();  // gibt nur ---> <----- aus
        echo $blogurl; // funktioniert

function neu() {
    global $blogurl;
    echo '<br /> ---> '.$blogurl.' <---- <br />';
}

Wie in den Kommentaren schon steht wird $blogurl 2x ausgegeben, jedoch nicht, wenn ich es über die Funktion versuche (was ja eigentlich dank global gehen sollte, oder?)

Bin ich jetzt wirklich zu doof?

Vielen Dank
Grüße
Klener

Offline

#2 06. Januar 2012 09:56

Andiministrator
Kabeljungwerker
Ort: Plauen / Vogtland
Registriert: 09. November 2010
Beiträge: 264
Webseite

Re: [PHP] globals funktionieren in Funktion nicht?

Was passiert denn, wenn Du $blogurl der Funktion übergibst? Also in etwa so:
neu($blogurl);


Arbeitet bei conversearch GmbH: http://conversearch.de (Webseiten-Analyse und -Monitoring)
Bloggt bei Andiministrator.de: http://andiministrator.de

Offline

#3 06. Januar 2012 12:37

piratos
arbeitet mit CMS/ms
Registriert: 12. August 2011
Beiträge: 545

Re: [PHP] globals funktionieren in Funktion nicht?

Wenn man den Code so als Alleinscript nimmt, dann funzt es problemlos.

Offline

#4 06. Januar 2012 14:33

Klener
probiert CMS/ms aus
Registriert: 15. November 2011
Beiträge: 45
Webseite

Re: [PHP] globals funktionieren in Funktion nicht?

Oh man, daran hab' ich gar nicht gedacht, danke @Andiministrator!
Wenn man die Variable(n) als Parameter übergibt funktionierts.
Trotzdem etwas eigenartig, denn wie piratos schon gesagt hat, funktioniert das Script alleine (ohne CMSMS) einwandfrei.

Ich markier' das hier trotzdem mal als gelöst. :-P

Grüße
Klener

Offline

#5 06. Januar 2012 14:37

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [PHP] globals funktionieren in Funktion nicht?

Globale Variablen

Eine globale Variable definiert man implizit durch ihre Benutzung innerhalb des globalen Namensraumes, also einfach durch

$a = 10;

außerhalb jeder Klasse oder Funktion.

(quelle: http://www.php-faq.de/q-php-variablen.html)
Ich vermute mal der fett markierte Teil ist bei Dir nicht gegeben.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#6 06. Januar 2012 14:39

Klener
probiert CMS/ms aus
Registriert: 15. November 2011
Beiträge: 45
Webseite

Re: [PHP] globals funktionieren in Funktion nicht?

NaN schrieb:

[...]
außerhalb jeder Klasse oder Funktion.

(quelle: http://www.php-faq.de/q-php-variablen.html)
Ich vermute mal der fett markierte Teil ist bei Dir nicht gegeben.

Das könnte natürlich gut möglich sein, weiß ich jetzt nicht, wie CMSMS das händelt mit dem Einbinden.

Offline

#7 06. Januar 2012 14:42

nockenfell
Moderator
Ort: Gontenschwil, Schweiz
Registriert: 09. November 2010
Beiträge: 2.934
Webseite

Re: [PHP] globals funktionieren in Funktion nicht?

Die action.default.php ist irgendwie ein Bestandteil der Klasse. In dieser Datei kann direkt mit $this->Funktionsname oder $this->varname auf die Modulklasse zugegriffen werden.

Dies legt für mich den Schluss nahe, dass diese Dateien ein Bestandteil der Modulklasse (allenfalls der Hauptmodulklasse) sind


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#8 06. Januar 2012 15:02

piratos
arbeitet mit CMS/ms
Registriert: 12. August 2011
Beiträge: 545

Re: [PHP] globals funktionieren in Funktion nicht?

Wenn Bestandteil einer Klasse definierst du einfach die Var und sprichst sie mit
$this->blogurl an, das wars.
global ist dann nicht nötig.

Offline