Magento es bastante protector (como debería ser) con respecto a la visualización de errores. Cuando el modo de desarrollador está habilitado (como debería estarlo durante el desarrollo), la aplicación permite que los comentarios de errores en tiempo de ejecución broten hacia el usuario. Para los errores de compilación XML, aunque estos comentarios son bastante inútiles:
Error grave: excepción no detectada 'Excepción' con el mensaje 'Advertencia: simplexml_load_string (): Entidad: línea 4: error del analizador: declaración XML permitida solo al comienzo del documento en [...] / lib / Varien / Simplexml / Config. php en línea 510 'en [...] aplicación / código / core / Mage / Core / functions.php en línea 245
Esto resulta de Varien_Simplexml_Config::loadFile()
presentar ::loadString()
una cadena que no se puede analizar:
public function loadFile($filePath)
{
if (!is_readable($filePath)) {
//throw new Exception('Can not read xml file '.$filePath);
return false;
}
$fileData = file_get_contents($filePath);
$fileData = $this->processFileData($fileData);
return $this->loadString($fileData, $this->_elementClass);
}
Existen varias soluciones potenciales, incluido el uso libxml_use_internal_errors
, pero el método de llamada no comunica el $filePath
parámetro, por lo que se perdería el contexto. Una posibilidad sería lanzar una excepción más explícita:
public function loadFile($filePath)
{
if (!is_readable($filePath)) {
//throw new Exception('Can not read xml file '.$filePath);
return false;
}
$fileData = file_get_contents($filePath);
$fileData = $this->processFileData($fileData);
try{
return $this->loadString($fileData, $this->_elementClass);
}
catch (Exception $e){
Mage::throwException (
sprintf(
"%s: error parsing %s:\r\n%s",
__METHOD__,
$filePath,
$e->getMessage()
)
);
}
}
Esto al menos proporciona resultados como los siguientes:
Error grave: excepción no detectada 'Mage_Core_Exception' con el mensaje ' Varien_Simplexml_Config :: loadFile: error al analizar [...] / app / code / local / Some / Example / etc / config.xml : Advertencia: simplexml_load_string (): Entidad: línea 4 : error del analizador: declaración XML permitida solo al comienzo del documento en [...] / lib / Varien / Simplexml / Config.php en la línea 534 'en [...] / app / Mage.php en la línea 594
¿Hay algunas ventajas / desventajas / enfoques alternativos para considerar aquí?