Willkommen, Gast ( Anmelden | Registrierung )     [ Hilfe | Mitglieder | Suche ]

2 Seiten V  < 1 2  
Reply to this topicStart new topic
> Plugin: OpenID v01.00.00, OpenID ermöglicht einen Frontend-Login über ein dezentrales System z
MaZderMind
Beitrag 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
Go to the top of the page
 
+Quote Post
STam
Beitrag 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!
Go to the top of the page
 
+Quote Post
MaZderMind
Beitrag 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 wink.gif

Dann machen wirs halt so:
QUELLTEXT
$h = fopen($file, 'r', 1);
if($h !== false) {
    fclose($h);
    include_once($file);
    return true;
}


Gruß, Peter
Go to the top of the page
 
+Quote Post
STam
Beitrag 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 @ smile.gif den return bekommt man aber trotzdem.
Go to the top of the page
 
+Quote Post
MaZderMind
Beitrag 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
Go to the top of the page
 
+Quote Post
STam
Beitrag 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 smile.gif

Gruß
Go to the top of the page
 
+Quote Post
tobaco
Beitrag 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!
Go to the top of the page
 
+Quote Post
Tiggr
Beitrag 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
Go to the top of the page
 
+Quote Post
Tiggr
Beitrag 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
Go to the top of the page
 
+Quote Post

2 Seiten V  < 1 2
Reply to this topicStart new topic
1 Besucher lesen dieses Thema (Gäste: 1 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 27.4.24 - 07:34

Sefrengo ist ein eingetragenes Markenzeichen und urheberrechtlich geschützt.
Copyright 2009 Design & Daten, Alle Rechte vorbehalten.