PEAR-Forum.de Übersicht Thema anzeigen - Strict Standards: Non-static method PEAR::loadExtension()...

Strict Standards: Non-static method PEAR::loadExtension()...


 

PEAR-Forum.de Übersicht » Allgemeine PEAR-Themen
Neues Thema eröffnen Neue Antwort erstellen Diesen Beitrag ausdrucken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Innocentus
Neuer User


Anmeldungsdatum: 24.01.2009
Beiträge: 4

Beitrag28.01.2009 21:57    Strict Standards: Non-static method PEAR::loadExtension()... Antworten mit Zitat

Wenn ich das Image_Transform-Objekt von PEAR über die factory instantiiere, tritt folgende Meldung auf:
Code:
Strict Standards: Non-static method PEAR::loadExtension() should not be called statically, assuming $this from incompatible contex in [...]


Das error_reporting ist folgendermaßen gesetzt, da ich strikten PHP-Code schreiben möchte:
PHP:
<?php
error_reporting
(E_ALL E_STRICT);


Folgender PHP-Code wird für die Instantiierung verwendet:
PHP:
<?php
$im 
= new Image_Transform();
$it $im->factory('GD');


Wie werde ich diese Meldung ohne Unterdrückung derselbigen los?

Mit freundlichen Grüßen
Innocentus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
mark
Power User


Anmeldungsdatum: 31.05.2004
Beiträge: 970

Beitrag29.01.2009 0:00     Antworten mit Zitat

Solange du PEAR-Pakete einsetzt, die zu PHP 4 kompatibel sind (und gerade bei PEAR selbst ist das natürlich der Fall), bleibt dir nichts anderes übrig, als E_STRICT aus dem Error-Reporting rauszunehmen, da es nicht möglich ist, alle E_STRICT-Meldungen zu vermeiden und gleichzeitig zu PHP 4 kompatibel zu bleiben. (Einiges ist natürlich schon möglich, aber eben nicht alles.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen PEAR-User
Innocentus
Neuer User


Anmeldungsdatum: 24.01.2009
Beiträge: 4

Beitrag29.01.2009 0:38     Antworten mit Zitat

Erst einmal vielen Dank für Deine Antwort!

Durch so eine Meldung möchte ich mich natürlich nicht behindern lassen.
- Kann ich die strict-Meldungen nur für die PEAR-Bibilothek unterdrücken?
Oder gibt es mittlerweile auch ein PEAR, welches für PHP5 optimiert wurde?

Mit freundlichen Grüßen
Innocentus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Berdir
Power User


Anmeldungsdatum: 22.09.2005
Beiträge: 1347

Beitrag29.01.2009 1:07     Antworten mit Zitat

Es wird an PEAR2/Pyrus gearbeitet, welches nur noch PHP5 (Um genau zu sein, sogar PHP 5.3!) aufwärts unterstützt.

Du könntest deinen eigenen error_handler schreiben, der z.b. alle E_STRICT-"Fehler" von Dateien aus dem /usr/share/pear Verzeichnis ignoriert. Das wäre aber ziemlich langsam weil dann bei jedem E_STRICT Fehler (und davon kann es sehr viele geben, bei jedem is_a, class::method Aufruf etc). den Pfad zur Datei auslesen und abgleichen), würde ich also höchstens in der Entwicklungsumgebung machen.

http://php.net/set_error_handler
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden PEAR-User
Innocentus
Neuer User


Anmeldungsdatum: 24.01.2009
Beiträge: 4

Beitrag31.01.2009 19:37    Lösung Antworten mit Zitat

Für alle, die dasselbe Problem haben oder die es interessiert - hier die Lösung:
PHP:
<?php
//String helper function for error-handler:
    
function str_contains($haystack$needle$ignoreCase false) {
        if (
$ignoreCase) {
            
$haystack strtolower($haystack);
            
$needle   strtolower($needle);
        }
        
$needlePos strpos($haystack$needle);
        return (
$needlePos === false false : ($needlePos+1));
    }
    
    
//Define error-handling function for development environment:
    
function ErrorHandler($err_code$err_desc$err_file$err_row)
    {
        if (
error_reporting() == 0) { //Ignore warnings which has been ignore-flagged
            
return;
        }else{
            if(
str_contains($err_file,"PEAR") and $err_code == E_STRICT){ 
                    
//Ignore PEAR strict warnings
            
}else{
                switch (
$err_code) {
                    case 
E_USER_ERROR:                
                        echo 
"<b>ERROR</b> [$err_code] $err_desc - row $err_row in file $err_file<br />\n";
                        exit(
1);
                        break;

                    case 
E_USER_WARNING:
                        echo 
"<b>WARNING</b> [$err_code] $err_desc - row $err_row in file $err_file<br />\n";
                        break;

                    case 
E_USER_NOTICE:
                        echo 
"<b>NOTICE</b> [$err_code] $err_desc - row $err_row in file $err_file<br />\n";
                        break;

                    case 
E_STRICT:
                        echo 
"<b>STRICT</b> [$err_code] $err_desc - row $err_row in file $err_file<br />\n";
                        break;

                    default:
                        echo 
"<b>UKNOWN ERROR</b> [$err_code] $err_desc - row $err_row in file $err_file<br />\n";
                        break;
                }
            }
            return 
true;
        }
    }
    
$nat_error_handler set_error_handler("ErrorHandler");


Mit freundlichen Grüßen
Innocentus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Diese Seite übersetzen
PEAR-Forum.de Übersicht » Allgemeine PEAR-Themen
Neues Thema eröffnen Neue Antwort erstellen Diesen Beitrag ausdrucken
   Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

Zu Deinen Favoriten hinzufügen

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen