Namespaces und Klassen in Modulen
Posted: 13. January 2014 12:30
Deine Portal Version: 2.0.1
Typ Deines phpBB Forums: Standard phpBB3
MODs installiert: Nein
Dein Wissensstand: Fortgeschritten
Link zu Deinem Forum: http://ldh.terpo.org
Was hast Du gemacht, bevor das Problem aufgetreten ist?
-
Was hast Du bereits versucht um das Problem zu lösen?
Lösen konnte ich es nicht aber umgehen. Siehe Hauptbeitrag.
Fehlerbeschreibung und Nachricht
Hallo,
um mein Problem zu erklären muss ich wohl erstmal einen kleinen Bogen spannen. Ich versuche ein Welt gegen Welt Modul für GuildWars 2 zu basteln. GW² bietet eine schicke API und Wrapper für PHP gibt es auch. (GW2 Wiki API & genutzter Wrapper für PHP)
Der Wrapper funktioniert einwandfrei und wird folgendermaßen eingebunden (im Normalfall)
Hier der ein wenig zusammengekürzte Modul.php Code:
Die require Funktion arbeitet soweit einwandfrei, keine Fehlermeldungen. Problematisch wird es bei den Namespaces. Hier mal die Fehlermeldung für mein Modul in nem Testforum:
Sobald ich die use Funktionen oben auskommentiere bekomme ich folgende Fehlermeldung.
Aber der Fehler ist mehr oder minder klar weil soweit ich weiß include/require Klassen nicht mit einbinden.
Wenn man den ganzen Spaß direkt in der Portal.php einbindet hat er mit dem use plötzlich kein Problem mehr. Daraus schließe ich das es irgendwas mit dem Modulsystem zu tun haben muss.
Was leider auch nicht funktioniert ist nur die require und use Sachen in die Portal.php zu packen und dann im Modul mit dem Rest weiterzuarbeiten.
Dort kommt dann leider auch diese Meldung:
Meine derzeitige, ziemlich russische, Lösung:
Ich hab quasi den kompletten Modulcode direkt in die Portal.php geschrieben und erzeuge mir mit
eine Variable.
Dann hab ich quasi ein leeres Modul gebaut welches nur das Template nutzt. Dort wird dann 'PORTAL_GW2_WVW' eingebunden.
Es funktioniert erst einmal soweit, aber die Lösung ist alles andere als zufriedenstellend.[/i]
Typ Deines phpBB Forums: Standard phpBB3
MODs installiert: Nein
Dein Wissensstand: Fortgeschritten
Link zu Deinem Forum: http://ldh.terpo.org
Was hast Du gemacht, bevor das Problem aufgetreten ist?
-
Was hast Du bereits versucht um das Problem zu lösen?
Lösen konnte ich es nicht aber umgehen. Siehe Hauptbeitrag.
Fehlerbeschreibung und Nachricht
Hallo,
um mein Problem zu erklären muss ich wohl erstmal einen kleinen Bogen spannen. Ich versuche ein Welt gegen Welt Modul für GuildWars 2 zu basteln. GW² bietet eine schicke API und Wrapper für PHP gibt es auch. (GW2 Wiki API & genutzter Wrapper für PHP)
Der Wrapper funktioniert einwandfrei und wird folgendermaßen eingebunden (im Normalfall)
Code: Select all
require_once($phpbb_root_path . 'gw2api/Gw2SDK.php');
require_once($phpbb_root_path . 'gw2api/Gw2Exception.php');
use \vesu\SDK\Gw2\Gw2SDK; //NAMESPACE
use \vesu\SDK\Gw2\TwitchException; //NAMESPACE
Code: Select all
public function get_template_side($module_id)
{
global $config, $template, $phpbb_root_path, $phpEx;
require_once($phpbb_root_path . 'gw2api/Gw2SDK.php');
require_once($phpbb_root_path . 'gw2api/Gw2Exception.php');
use \vesu\SDK\Gw2\Gw2SDK;
use \vesu\SDK\Gw2\TwitchException;
$gw2_wvw = new Gw2SDK();//$phpbb_root_path .'/cache/gw2_wvw/' //ZEILE 67
.
. Berechnungen
.
$template->assign_vars(array(
'PORTAL_GW2_WVW_RED' => $gw2_wvw_red,
'PORTAL_GW2_WVW_BLUE' => $gw2_wvw_blue,
'PORTAL_GW2_WVW_GREEN' => $gw2_wvw_green,
));
return 'gw2_wvw.html';
}
Code: Select all
Parse error: syntax error, unexpected 'use' (T_USE) in D:\Programme\xampp\htdocs\ldh\portal\modules\portal_gw2_wvw.php on line 64
Code: Select all
Fatal error: Class 'Gw2SDK' not found in D:\Programme\xampp\htdocs\ldh\portal\modules\portal_gw2_wvw.php on line 67
Wenn man den ganzen Spaß direkt in der Portal.php einbindet hat er mit dem use plötzlich kein Problem mehr. Daraus schließe ich das es irgendwas mit dem Modulsystem zu tun haben muss.
Was leider auch nicht funktioniert ist nur die require und use Sachen in die Portal.php zu packen und dann im Modul mit dem Rest weiterzuarbeiten.
Dort kommt dann leider auch diese Meldung:
Code: Select all
Fatal error: Class 'Gw2SDK' not found in D:\Programme\xampp\htdocs\ldh\portal\modules\portal_gw2_wvw.php on line 67
Ich hab quasi den kompletten Modulcode direkt in die Portal.php geschrieben und erzeuge mir mit
Code: Select all
$template->assign_vars(array(
'PORTAL_GW2_WVW' => $gw2_wvw_portal_return,
));
eine Variable.
Dann hab ich quasi ein leeres Modul gebaut welches nur das Template nutzt. Dort wird dann 'PORTAL_GW2_WVW' eingebunden.
Es funktioniert erst einmal soweit, aber die Lösung ist alles andere als zufriedenstellend.[/i]