global Variablen Problem

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
Benutzeravatar
TimoMF
Mitglied
Beiträge: 33
Registriert: 16.05.2004 22:01

global Variablen Problem

Beitrag von TimoMF »

Hallo,

ich bin ja dabei eine Extension zu schreiben mit der BBClone unter phpBB 3.1.x funktioniert.

Inzwischen habe ich es weitestgehend am laufen und bin auf ein Problem mit 'global' gestossen. Die Extension ruft die 'mark_page.php' auf. In der 'mark_page.php' wird dann die 'config.php' und auch die 'log_processor.php' geladen per 'require_once'. In der 'log_processor.php' sind dann die Variablen aus der 'config.php' nicht mehr verfügbar, obwohl die dort mit 'global' doch verfügbar sein sollten.

Woran mag das liegen, mus ich die noch vorher in meiner Extension freigeben? Wenn ja wie?

Gruß Timo
Benutzeravatar
Wolfsblvt
Mitglied
Beiträge: 29
Registriert: 26.10.2014 22:15

Re: global Variablen Problem

Beitrag von Wolfsblvt »

Welche Variablen sind denn nicht mehr sichtbar?
Also was ist die genaue Fehlermeldung?

Aufpassen würde ich auf jeden Fall mit der config.php, wenn die Daten nämlich in einer Variable names $config gespeichert werden, kommt es ziemlich sicher zu Problemen.
Lesser, greater, middling, it's all the same. Proportions are negotiated, boundaries blurred.
I'm not a pious hermit, I haven't done only good in my life. But if I'm to choose between one evil and another,
then I prefer not to choose at all.
― Andrzej Sapkowski, The Last Wish
Benutzeravatar
TimoMF
Mitglied
Beiträge: 33
Registriert: 16.05.2004 22:01

Re: global Variablen Problem

Beitrag von TimoMF »

Danke für die schnelle Antwort.

Es gibt keine Fehlermeldung.
Wenn ich die Variablen auslese sind sie leer.

Die Variablen fangen alle mit '$BBC_' an, also sollte das keinen Konflikt mit der $config geben wegen der doppelten Belegung.

Da sie leer sind und nicht wie z.B. bei dieser '$BBC_MAXVISIBLE = 100;' mehr den Wert 100 haben ist anschlessend auch die Liste leer. So äussert sich das Problem.
Diese Variable wird mit 'global' in einer Funktion in der 'log_processor.php' aufgerufen. Dort ist sie dann leider leer.
Da es nur unter phpBB 3.1.x diese Probleme gibt, gehe ich davon aus das ich die Variablen die Global genutzt werden sollen auch irgend wo freigeben mus. Nur wo und wie?


Gruß Timo
Benutzeravatar
Wolfsblvt
Mitglied
Beiträge: 29
Registriert: 26.10.2014 22:15

Re: global Variablen Problem

Beitrag von Wolfsblvt »

Globale Variablen funktionieren weiterhin. Sollten nur vermieden werden.
Lediglich die Superglobals ($_SERVER, $_REQUEST etc.) gehen nicht mehr, außer man aktiviert sie.

Wie siehts denn aus, ist es möglich dass du den Code postest? Vielleicht erkennt man dann ja auf die Schnelle den Fehler.


Wobei halt die Frage ist, wenn du exakt dasselbe wie unter phpBB 3.0.x benutzt, und es jetzt aber nicht funktioniert, wird das wohl wirklich eine andere Ursache haben.

Du könntest es mal mit

Code: Alles auswählen

$request->enable_super_globals(); 
vor dem ersten Aufruf probieren.
Glaube aber nicht, dass das die Lösung ist.
Lesser, greater, middling, it's all the same. Proportions are negotiated, boundaries blurred.
I'm not a pious hermit, I haven't done only good in my life. But if I'm to choose between one evil and another,
then I prefer not to choose at all.
― Andrzej Sapkowski, The Last Wish
Benutzeravatar
TimoMF
Mitglied
Beiträge: 33
Registriert: 16.05.2004 22:01

Re: global Variablen Problem

Beitrag von TimoMF »

Enable_super_globals nutze ich bereits da BBClone ja eine Webstatistic ist und die Superglobals abfragt.

So wird BBClone aufgerufen aus der Ext:

Code: Alles auswählen

	public function bbclone_viewtopic($event)
	{
		$this->request->enable_super_globals();
		$label_for_bbclone = 'Forum topic: '.$event['topic_data']['topic_title'];
		define("_BBC_PAGE_NAME", $label_for_bbclone);
		define("_BBCLONE_DIR", "./bbclone/");
		define("COUNTER", _BBCLONE_DIR."mark_page.php");
		if (is_readable(COUNTER)) include_once(COUNTER);
		$this->request->disable_super_globals();
	}
Download BBClone_ext

Unter phpBB 3.0.x funktionierte der Aufruf noch, wie auf dieser Seite beschrieben. Angepasst ist die '$label_for_bbclone' Variable, da sich die Variablen ja geändert haben.

BBClone selbst Poste ich hier lieber nicht aber die Downloadseite könnte ich posten da sollten die Autoren wohl nichts gegen haben.
http://www.bbclone.de/download.php
Antworten

Zurück zu „Extension Bastelstube“