Nu ik een tijdje met php bezig ben, me sinds kort meer op php richt en ook echt functionele tools aan het ontwikkelen ben vraag ik me wat af. Wat is de meest nette manier om "iets wat niet lukt" af te handelen?
In principe kan je (net als algemene php functies dat doen) een return waarde geven. Je kan ook als iets niet lukt een error triggeren, en tot slot kan je een uitzondering opgooien. Maar wat is nu eigenlijk de meest nette oplossing?
Ter illustratie even drie voorbeelden op een rij, allemaal om deze casus heen:
Return
Error
Exception
Ik verwacht dat iedereen die exceptions het "beste" vind. Maar waarom bestaan die andere manieren dan? Gebeurt het überhaupt wel eens dat je een error triggert? Ik snap niet goed in welk geval je trigger_error gebruikt en wanneer je een uitzondering opgooit
In principe kan je (net als algemene php functies dat doen) een return waarde geven. Je kan ook als iets niet lukt een error triggeren, en tot slot kan je een uitzondering opgooien. Maar wat is nu eigenlijk de meest nette oplossing?
Ter illustratie even drie voorbeelden op een rij, allemaal om deze casus heen:
PHP:
Als het nu niet zal werken (will_this_work is false), kan je het op de drie manieren oplossen:1
2
3
4
5
6
7
| class foo{ public static function bar(){ if( $this->will_this_work() ) return do_something(); } } $test = foo::bar(); |
Return
PHP:
1
2
3
4
5
6
7
8
9
10
| class foo{ public static function bar(){ if( $this->will_this_work() ) return do_something(); else return false; } } if( $test = foo::bar() ) print "er ging iets mis"; |
Error
PHP:
1
2
3
4
5
6
7
8
9
| class foo{ public static function bar(){ if( $this->will_this_work() ) return do_something(); else trigger_error( "Er ging iets mis" , E_USER_WARNING ); } } $test = foo::bar(); |
Exception
PHP:
Ik gebruikte vroeger veel de eerste (php4), en ben nu af en toe een error aan het triggeren, soms een exception, soms retourneer ik onwaar. Maar ik zit nu wel in dubio: wat is nu het beste?1
2
3
4
5
6
7
8
9
10
11
12
13
| class foo{ public static function bar(){ if( $this->will_this_work() ) return do_something(); else throw new Exception( "Er ging iets mis" ); } } try{ $test = foo::bar(); }catch( Exception $e ){ echo $e->getMessage(); } |
Ik verwacht dat iedereen die exceptions het "beste" vind. Maar waarom bestaan die andere manieren dan? Gebeurt het überhaupt wel eens dat je een error triggert? Ik snap niet goed in welk geval je trigger_error gebruikt en wanneer je een uitzondering opgooit