Esta no es una pregunta de "arreglar mi código", más una configuración. Estoy trabajando con la pila HTML/Javascript/PHP/MySql. Soy un desarrollador experimentado de C#/TSQL pero bastante nuevo en esta pila. Encuentro la depuración muy frustrante ya que los errores de compilación/análisis no se muestran durante el desarrollo. Por ejemplo, después de hacer una serie de modificaciones, en una de mis librerías de PHP me ha quedado lo siguiente:
function sp_AssignNotificationsToUsr($CreateGUID, $UsrID, &$message) // boolean // This assigns any notifications with the CreateGUID passed, to the UsrID passed. // If successful, returns true, else false. // If false is returned, look in $message for an error message. { try { $sql = ""; $sql .= "SET @CreateGUID = " . Str2SQL($CreateGUID) . ";" . PHP_EOL; $sql .= "SET @UsrID = " . $UsrID . ";" . PHP_EOL; $sql .= "" . PHP_EOL; $sql .= "CALL AssignNotificationsToUsr(@CreateGUID, @UsrID);" . PHP_EOL; $sql .= "" . PHP_EOL; $db = new DB; if (!$db->connect()) throw new Exception("Could not connect to database correctly."); $dss = $db->executeMultiQuery2($sql); $db->disconnect(); return true; } catch (Exception $e) { $message = $->getMessage(); ErrorMessageEmail("sprocs.php:sp_AssignNotificationsToUsr", 1, $e); return false; } }Cuando ejecuto la página de llamada, regresa vacía sin errores. Ya he ejecutado lo siguiente durante la página:
ini_set('display_startup_errors', 1); ini_set('display_errors', 'On'); error_reporting(E_ALL);Cuando esto ocurre (sin salida, sin errores), dedico tiempo a comentar y eliminar grandes franjas de código en varios archivos, tratando de precisar dónde está el error de análisis. En este caso, resultó ser que:
$message = $->getMessage();
debería haber sido:
$message = $e->getMessage();
Estoy acostumbrado a que Visual Studio señale los errores de análisis incluso antes de intentar ejecutar el código, que obviamente no es así como funciona aquí. Estoy usando Notepad++ como editor. ¿Hay alguna configuración que pueda usar para mostrar errores de tiempo de compilación como este? Lo mismo con el Javascript del lado del cliente. Si tiene un error de análisis, simplemente no hace nada y no se muestran errores. ¿Cómo puedo obtener los errores del analizador que se muestra?