Reemplazar getError y getErrors en desuso

8

He estado revisando algunos registros y noté que getError () y getErrors () están arrojando mensajes obsoletos en Joomla 3.3 (acabamos de actualizar). Aparentemente, estos quedaron obsoletos en Joomla 2.5, pero me cuesta encontrar una solución para actualizar.

Eché un vistazo a los archivos principales de Joomla e incluso todavía usan getError () y getErrors (). ¿Hay un reemplazo para estos, o es como JViewLegacy, etc., donde no hay una alternativa en este momento?

Un ejemplo donde lo estoy usando es para salvar a un usuario:

if (!$user->save()) {
        $error = $user->getError();
        ...
}
DemonGyro
fuente

Respuestas:

3

Deberías usar Excepciones PHP en su lugar. Me resulta extraño que Joomla arroje mensajes en desuso cuando JErrortodavía no se usa en el núcleo 3.3.6.

De todos modos, lo siguiente sería un ejemplo de Excepciones para una consulta de base de datos

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('username')))
      ->from($db->quoteName('#__user'))
      ->where($db->quoteName('username') . ' = ' . $db->quote('Lodder'));
$db->setQuery($query);

try
{
    // Try to get an object based on the results from the database
    $results = $db->loadObjectList();
    print_r($results);
}
catch (Exception $e)
{
    // Start crying cause it didn't work
    echo $e->getMessage();
}

Esto arrojará un error diciendo que la tabla no existe porque la he usado en #__userlugar de #__users.

En su caso, intentaría lo siguiente:

try
{
    $user->save();
    // redirect or do something magical
}
catch (Exception $e)
{
    echo $e->getMessage();
}

$e->getMessage() por supuesto, obtiene el error, por lo que dentro de la captura, puede elegir qué desea hacer con él, como registrarlo o simplemente mostrarlo.

Lodder
fuente
¿$ E-> getMessage () devolverá los mismos mensajes de error que la llamada getError () (también localizada)?
DemonGyro
Encontré tiempo para implementar los cambios que sugirió y no funcionó. save () no arroja los errores que espero como excepciones, por lo que el código catch nunca se ejecuta.
DemonGyro