Portal > Foren > PHP > PHP-Programmierung > Welche Seitenstruktur...herangehensweise
Antwort
 
Themen-Optionen
Alt 07.12.2007, 08:01 Nach oben    #61
Martin Eisengardt
 
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
Standard

Zitat:
Zitat von kampfgnom Beitrag anzeigen
Kann man das so machen?? Oder nicht. Denn so hätt ich zumindest schonmal eine möglichkeit zuÜberprüfen ob es wirklich "meine" Exceptions sind
Das ist aus dem genannten Grund schon OK. Die Namensgebung solltest du - wie schon gesagt - überdenken. ExceptionHandler ist da ziemlich irreführend. Eher sowas wie "MyException" oder "KampfGnomException" oder "BaseException".

Aber funktioniert der Code denn so? IMHO muss eine Exception immer von Exception abgeleitet sein. Das, was in einem Catch-Block steht ebenso. Sprich: Prüfe mal, ob der deinen Catch-Block überhaupt anspringt.
__________________
Open Sourcing the Online Gaming Universe
PHP/SQL/Java/C++/Assembler.
Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html
mepeisen ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.12.2007, 14:42 Nach oben    #62
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 406
Standard

Ähm, myException ist doch von der Exceptionsklasse abgeleitet...

und das zweite Codebespiel war letztendlich der wirklcihe Exceptoinshandler, also meine Errorklasse die dann weiß was mit den Exceptions zutun ist.

Das müsste eigentlich so heißen
PHP-Code:
function exception_handler($exception) {
     
$error = new Errorclass($exception); #Errorklasse
     
$error->execute(); #Ausführen der Aktion der jeweiligen Exceptoin
}

set_exception_handler('exception_handler'); 
__________________
kampfgnom ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2007, 16:25 Nach oben    #63
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 406
Standard

Ok ich hab weitergebastelt.

Habe jetzt auch einen ErrorHandler der anhand einer Config entscheidet, was mit einer Exception passiert.
Aber die Config ist genau mein Problem.
Man muss ja für einen eigenen Exceptionshandler eine eigene funktion schreiben
das sieht bei mir so aus:
PHP-Code:
function exceptionshandler($exception)
{
        
$handler = new Error_ExceptionsHandler();
        
$handler->handleException($exception);
}

set_exception_handler('exceptionshandler'); 
Mein Problem ist aber, das ich noch eineConfig setzen muss. Man ja aber keine Config-Variable übergeben kann.

Sollte man dann die Konfiguration in diese Funktion verlegen also so:
PHP-Code:
function exceptionshandler($exception)
{
        
$config = array( array('type' => "Error_Exceptions_DbException"'action' => 'log'));
        
$handler = new Error_ExceptionsHandler();
        
$handler->setExceptionsConfig($config);
        
$handler->handleException($exception);
}

set_exception_handler('exceptionshandler'); 
oder wie könnte ich das lösen. Vorallem will ich gewährleisten, dass man auch die Config aus einer Ini-Datei holen kann, aber dazu bräuchte ich ja wieder eineklasse und ich glaube dann wird da zuviel logig in die Funktion gebracht. Irre ich mich da?

zur Info mein Errorhandler sieht so aus, vlt könnt ihr da noch eine Verbesserung finden:
PHP-Code:
<?php
class Error_ExceptionsHandler
{
    protected 
$exceptionsConfig null;
    public function 
__construct()
    {
        
    }
    
    public function 
setExceptionsConfig(array $config)
    {
        if (
key_exists('type'$config) and key_exists('action'$config))
        {
            
$this->exceptionsConfig $config;
        }else throw new 
Exception('Unknown build of an Array!');
        
    }
    
    public function 
addExcptionConfig(array $config)
    {
        
$this->exceptionsConfig[] = $config;
    }
    
    public function 
handleException(Error_Exceptions_iErrorException $exception)
    {
        if (
$this->exceptionsConfig !== null)
        {
            foreach (
$this->exceptionsConfig as $config)
            {
                if (
$config['type'] == $exception->getType())
                {
                    switch (
$config['action'])
                    {
                        case 
'log':
                            echo 
$this->writeLog($exception->getMessage(), $exception->getCode());
                            break;
                        
                        
#other ways to handle an Exception...
                        
default:
                            throw new 
Exception('Unknown Exception! The Script has to cancel!');
                    }
                }
            }
        }else throw new 
Exception('You have to Configure the Exceptionshandler!');
        
    }
    
    protected function 
writeLog($message$code)
    {
        
//code to write a message in a log!
       //NUR ZUM TESTEN:
        
return "[".date()."] #".$code." ".$message;
    }
}
?>
Es sollten ja keine Exceptions in der Exceptionsklasse geworfen werden, das lößt ja eine endlosschleife aus. War aber die einzige Möglichkeit das ganze abzubrechen...oder sollte man da lieber die(); nehmen??
__________________
kampfgnom ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2007, 19:49 Nach oben    #64
Christian Schuhmann
 
Benutzerbild von bobby
 
Registriert seit: 09.03.2007
Ort: Nürnberg
Beiträge: 58
Standard

Hi Gabriel,

die Funktion 'exceptionshandler' ist, zumindest derzeit, überflüssig. Du kannst auch einfach eine Instanz + Methode an set_exception_handler übergeben.
(Geht mit den meisten Funktionen, die eine Callback-Funktion erwarten)

PHP-Code:
<?php
class Error_ExceptionsHandler
{
    public function 
something(Exception $e)
    {
        die(
'Ooohh no! ' $e->getMessage());
    }
}


set_exception_handler(array(new Error_ExceptionsHandler(), 'something'));

throw new 
Exception('Someting went wrong.');
?>
bobby.
bobby ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.12.2007, 20:03 Nach oben    #65
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 406
Standard

könnte ich ihm auch eine Instanz übergen. Also so:
PHP-Code:
$Exceptionsconfig     = array(
                                    array (
'type'=> 'default''action' => 'all'), 
                                    array(
'type' => "Error_Exceptions_DbException"'action' => 'all')
                                );
        
$config             = array (
                                    
'logfile' => 'log.log'
                                    
'adress' => 'errors@example.tld'
                                
);
        
$handler = new Error_ExceptionsHandler($config);
        
        
$handler->setExceptionsConfig($Exceptionsconfig);
set_exception_handler(array($handler'handleException' )); 
gut danke. Geht!
Habs getestet. Vielen dank.
Damit wir das ganze Überschaubarer!
__________________

Geändert von kampfgnom (09.12.2007 um 20:06 Uhr).
kampfgnom ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.12.2007, 15:22 Nach oben    #66
Gabriel
 
Registriert seit: 27.09.2006
Ort: Radebeul
Beiträge: 406
Standard

Hab jetzt mal mein "Errorhandling" online gestellt.
Wer möchte kann es sich ja mal anschauen und mir sagen was ihm gefällt bzw. fast besser wäre was nicht so doll ist:
hier ist die SVN-Repositroy zu finden:
http://svn2.assembla.com/svn/aedo/


grüße
Gabriel
__________________

Geändert von kampfgnom (13.12.2007 um 15:54 Uhr).
kampfgnom ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Seitenstruktur Verwaltungssoftware trefixxx Anwendungsdesign / Softwarearchitektur 9 01.03.2008 13:36
[Design] CMS-System: Seitenstruktur mepeisen PHP-Programmierung 19 30.07.2007 09:10
Anwendung unter PHP 5 lauffähig machen, Herangehensweise, Erfahrungen Ben PHP-Programmierung 12 02.02.2007 16:22


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:24 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44