Plugin: OpenID v01.00.00, OpenID ermöglicht einen Frontend-Login über ein dezentrales System z |
Willkommen, Gast ( Anmelden | Registrierung ) [ Hilfe | Mitglieder | Suche ]
Plugin: OpenID v01.00.00, OpenID ermöglicht einen Frontend-Login über ein dezentrales System z |
Sat. 6. January 2007, 22:46
Beitrag
#21
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 680 Mitglied seit: 09.08.2006 Wohnort: nähe Mainz Mitglieds-Nr.: 182 |
QUELLTEXT if (@require_once($file)) { return true; } Wird so nicht funktionieren, da require_once bei fehlenden Dateien immer false ausgibt, da es ja nicht wissen kann, dass die Datei gleichen namens identisch zu ihrem pendent in einem anderen Pfad ist. Die einzige möglichkeit scheint tatsächlich zu sein, auf die Existenz der Klasse an sich zu prüfen: QUELLTEXT function requireClass($package, $classname, $class_prefix = 'SF') { $file = $this->api_path . strtoupper($package) . '/class.' . $class_prefix . '_' . str_replace('/', '_', strtoupper($package)) . '_' . $classname . '.php'; $cla = ($subclassname == null) ? $classname : $subclassname; $cla = $class_prefix . '_' . str_replace('/', '_', strtoupper($package)) . '_' . $cla; if(class_exists($cla)) return true; if(file_exists($file)) { include_once($file); return true; } return false; } Der file_exists-Aufruf ist wegen eines PHP-Bugs nötig: http://www.php.net/manual/de/function.include-once.php#53239. Diese funktion checkt ob die angeforderte Klasse schon verfügbar ist. Wenn nicht wird versucht die zugehörige Datei einzubinden. Gelingt dies nicht wird false zurückgegeben, in allen anderen Fällen true. Gruß, Peter |
|
|
Sun. 7. January 2007, 02:04
Beitrag
#22
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 541 Mitglied seit: 27.06.2006 Mitglieds-Nr.: 8 |
Das Problem bei file_exists() ist, das es nicht in den include_path schauen kann, require(once) und include(once) nutzen auch den include_path von PHP wenn die Datei zuerst nicht im PATH gefunden wird!
|
|
|
Sun. 7. January 2007, 02:25
Beitrag
#23
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 680 Mitglied seit: 09.08.2006 Wohnort: nähe Mainz Mitglieds-Nr.: 182 |
Nuja aber andersrum bekommst du wenn du ein @ vor dein include packst /garkeine/ Fehlermeldungen mehr aus der includierten Dateien also noch nichtmal Parse-Errors! Probiers aus
Dann machen wirs halt so: QUELLTEXT $h = fopen($file, 'r', 1); if($h !== false) { fclose($h); include_once($file); return true; } Gruß, Peter |
|
|
Sun. 7. January 2007, 02:46
Beitrag
#24
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 541 Mitglied seit: 27.06.2006 Mitglieds-Nr.: 8 |
... das ist der Sinn von dem @ den return bekommt man aber trotzdem.
|
|
|
Sun. 7. January 2007, 15:39
Beitrag
#25
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 680 Mitglied seit: 09.08.2006 Wohnort: nähe Mainz Mitglieds-Nr.: 182 |
Hi
Ich sah das so dass so dass das @ nur die Fehlermeldung bei einer nicht vorhandenen Datei verhindern und nicht alle Fehlermeldungen innrhalb der Klasse -- das halte ich nämlich nicht für Sinnvoll. Als Klassenentwickler bekommt man dann nämlich schnell ordentliche Probleme wenn z.B. alle Parse-Fehler unterdrückt werden. Du sprachst ja davon einen Bugfix einreichen zu wollen, nur dass dein Fix das Problem halt nich behoben habt. Mein Vorschlag ist nun dieser: QUELLTEXT function requireClass($package, $classname, $class_prefix = 'SF') { $file = $this->api_path . strtoupper($package) . '/class.' . $class_prefix . '_' . str_replace('/', '_', strtoupper($package)) . '_' . $classname . '.php'; $cla = ($subclassname == null) ? $classname : $subclassname; $cla = $class_prefix . '_' . str_replace('/', '_', strtoupper($package)) . '_' . $cla; if(class_exists($cla)) return true; $h = fopen($file, 'r', 1); if($h !== false) { fclose($h); include_once($file); return true; } return false; } Hier wird die Datei nur eingebunden wenn die angeforderte Klasse nicht existiert und beim einbindenden der Klasse zwar (ohne Fehlerausgabe) auf das vorhandensein der Datei geprüft (und bei ihrem Fehlen false zurücgegeben), aber trotzdem Fehler in der eingebundenen Datei ausgegeben. Gruß, Peter |
|
|
Thu. 19. April 2007, 20:39
Beitrag
#26
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 541 Mitglied seit: 27.06.2006 Mitglieds-Nr.: 8 |
Gibt es noch Anregungen, Wünsche oder weitere Bugs?
Ansonsten fange ich mit dem Final Paket an Gruß |
|
|
Fri. 20. April 2007, 06:40
Beitrag
#27
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 185 Mitglied seit: 03.07.2006 Mitglieds-Nr.: 80 |
go final, go!
|
|
|
Mon. 20. August 2007, 08:57
Beitrag
#28
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 386 Mitglied seit: 12.07.2006 Mitglieds-Nr.: 136 |
Hiho!
Hat das ganze schon wer im Einsatz? Wie ist denn die Resonanz bei den Usern? Verstehen die was da abgeht, wenn Sie erstmal wo anders eine ID anlegen müssen, wird das aktzeptiert? Tschüss Tiggr (aka Marcus) -------------------- @bout Kites: Colorful Sky - Typo3
@bout LARP: Orga ohne Namen - Sefrengo @bout LARP: LARP-Welt - CakePHP @bout Kites: Rodgauer Workshop - Contao |
|
|
Tue. 2. October 2007, 16:04
Beitrag
#29
|
|
Advanced Member Gruppe: AdvancedMembers Beiträge: 386 Mitglied seit: 12.07.2006 Mitglieds-Nr.: 136 |
Hiho!
Mir ist nicht ganz klar, wie ich was ändern muß, damit es läuft, ich bekomme noch immer die Fehlermeldung: QUELLTEXT Fatal error: Call to a member function Execute() on a non-object in /var/www/sefrengo/backend/plugins/OpenID/API/ADMINISTRATION/OPENID/class.SF_ADMINISTRATION_OPENID_UserCollection.php on line 100 Hat wer die entsprechenden gepatchten Dateien? Tschüss Tiggr (aka Marcus) -------------------- @bout Kites: Colorful Sky - Typo3
@bout LARP: Orga ohne Namen - Sefrengo @bout LARP: LARP-Welt - CakePHP @bout Kites: Rodgauer Workshop - Contao |
|
|
Vereinfachte Darstellung | Aktuelles Datum: 23.9.24 - 18:42 |