|
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Innocentus Neuer User
Anmeldungsdatum: 24.01.2009 Beiträge: 4
|
28.01.2009 21:57 Strict Standards: Non-static method PEAR::loadExtension()... |
|
|
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 |
|
 |
mark Power User
Anmeldungsdatum: 31.05.2004 Beiträge: 970
|
29.01.2009 0:00 |
|
|
| 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 |
|
 |
Innocentus Neuer User
Anmeldungsdatum: 24.01.2009 Beiträge: 4
|
29.01.2009 0:38 |
|
|
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 |
|
 |
Berdir Power User
Anmeldungsdatum: 22.09.2005 Beiträge: 1347
|
29.01.2009 1:07 |
|
|
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 |
|
 |
Innocentus Neuer User
Anmeldungsdatum: 24.01.2009 Beiträge: 4
|
31.01.2009 19:37 Lösung |
|
|
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 |
|
 |
|
|
|
Zu Deinen Favoriten hinzufügen
|
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
|
|