Ik heb al jaren ervaring met het programmeren in PHP. Ik ben echter sinds kort begonnen met OOP.
Ik heb een class User genaamd gemaakt. In de construct gooi ik exceptions als er iets fout gaat.
Nu is mijn vraag, zijn deze exceptions op de een of andere manier wel op te halen?
Want het lijkt me dat als er in de __construct van een class iets fout gaat er geen nieuwe instantie van deze class wordt aangemaakt en dus ook niet de exceptions te vangen zijn.
als je dan toch wil beginnen met OOP ga dan geen exceptions in je constructor aanmaken.. hiervoor gebruik je een aparte functie binnen die class.(try-catch)
zo ongeveer, dit is het relevante stukje van mijn class:
<?php
class User
{
private $error = array();
public function __construct($id = '')
{
global $mysqli, $lang;
try
{
...............
if ($mysqli->error)
throw new Exception($lang['mysql']['error'] . $mysqli->error);
...............
return true;
}
catch (exception $e)
{
$this->error[] = $e->getMessage();
return $this->error;
}
}
public function error()
{
$return = "";
foreach ($this->error as $error)
{
$return .= $error;
}
return $return;
}
}
?>
Als ik dan een nieuwe User aanmaak:
<?php
$user = new User('10');
?>
En er bestaat geen gebruiker met dat ID, dan wordt er een exception gegooid. Maar deze kan ik dus nooit vangen omdat er geen nieuwe instantie wordt aangemaakt van User(). Tenminste, dat lijkt me logisch.