. * * ========================= * * This file contains DatabaseExceptionFactory class * * @category Common * @package DmarcSrg * @author Aleksey Andreev (liuch) * @license https://www.gnu.org/licenses/gpl-3.0.html GNU/GPLv3 */ namespace Liuch\DmarcSrg\Exception; /** * Factory class for DatabaseException */ class DatabaseExceptionFactory { /** * Creates a DatabaseException instance with an appropriate message based on the passed class's name and error code. * * @param Exception $origin The original exception * * @return DatabaseException */ public static function fromException(\Throwable $origin) { $msg = null; if (get_class($origin) === 'PDOException') { switch ($origin->getCode()) { case 1044: case 1045: $msg = 'Database access denied'; break; case 2002: case 2006: $msg = 'Database connection error'; break; } } if (!$msg) { $msg = 'Database error'; } return new DatabaseException($msg, -1, $origin); } }