Buenas tengo problemas con realizar un extends de una excepcion
tengo 3 carpetas:
-BD
-Entidades
-Negocio
en Entidades cree sdcE.php conteniendo la clase heredada excepcion :
Código PHP:
class SdcE extends Exception{
protected $categoria;
protected $mensajeAplicativo;
protected $mensajeUsuario;
public function __construct($categoria,$mensajeAplicativo,$mensajeUsuario) {
$this->categoria = $categoria;
$this->mensajeAplicativo = $mensajeAplicativo;
$this->mensajeUsuario = $mensajeUsuario;
parent::__construct($categoria, $mensajeAplicativo,$mensajeUsuario);
}
public function getCategoria() {
return $this->categoria;
}
public function getMensajeAplicativo() {
return $this->mensajeAplicativo;
}
public function getMensajeUsuario() {
return $this->mensajeUsuario;
}
}
En la carpeta BD cree conexion.php y consultas_SQL que contiene las consultas con sus respectivos throws :
conexion.php
Código PHP:
include('../Entidad/sdcE.php');
class MySQL{
private $conexion;
private $total_consultas;
public function __construct()
{
$this->conexion = mysql_connect(config::getBBDDServer(),config::getBBDDUser(),config::getBBDDPwd());
if(!$this->conexion){
throw new SdcE (0,'Error en la conexión',mysql_error($this->conexion));
}
if(!mysql_select_db(config::getBBDDName(),$this->conexion)){
throw new SdcE (1,'Error al seleccionar la BD',mysql_error($this->conexion));
}
}
public function __destruct()
{
mysql_close($this->conexion);
}
public function consulta($consulta){
$this->total_consultas++;
$resultado = mysql_query($consulta,$this->conexion);
if(!$resultado){
throw new SdcE(2,'Error en Sentencia BD',mysql_error($this->conexion));
}else{
return $resultado;
}
}
public function fetch_array($consulta){
return mysql_fetch_array($consulta);
}
public function num_rows($consulta){
return mysql_num_rows($consulta);
}
public function getTotalConsultas(){
return $this->total_consultas;
}
public function getConexion(){
return $this->conexion;
}
}
consultas_SQL.php
Código PHP:
include_once('conexionBD.php');
class SQLSisdeclas{
private $db;
private $conexion;
public function SQLSisdeclas(){
$this->db = new MySQL();
$this->conexion = $this->db->getConexion();
}
public function obtenerUltimoPeriodo(){
try{
$sql = "SELECT max(pa.id) ";
$sql .= "FROM periodoacademico pa ";
$mysqlQuery = mysql_fetch_array($this->db->consulta($sql));
return $mysqlQuery;
}catch(exception $e){
throw $e;
}catch(SdcE $ex){
throw $ex;
}
}
}
y en negocio la operacion
Código PHP:
class Operaciones{
public $dp;
public $BD;
function obtenerCursosMatriculados($id=NULL){
try{
$BD = new SQLSisdeclas();
$tabla = $BD->obtenerUltimoPeriodo();
return $id;
}catch(exception $e){
return $e->getMessage();
}catch(SdcE $ex){
return $ex->getCategoria();
}
}
}
Si en vez de SdcE en los throw uso Exception, me devuelve el mensaje de excepcion normal. (es decir si funciona con Exception).
Pero asi con una excepcion extendida no me funciona. Que puedo estar haciendo mal?.
gracias de antemano.