Magento è abbastanza protettivo (come dovrebbe essere) per quanto riguarda la visualizzazione degli errori. Quando la modalità sviluppatore è abilitata (come dovrebbe essere durante lo sviluppo), l'applicazione consente al feedback degli errori di runtime di comunicare all'utente. Per errori di compilazione XML sebbene questo feedback sia abbastanza inutile:
Errore irreversibile: eccezione non rilevata "Eccezione" con messaggio "Avvertenza: simplexml_load_string (): Entità: riga 4: errore parser: dichiarazione XML consentita solo all'inizio del documento in [...] / lib / Varien / Simplexml / Config. php on line 510 'in [...] app / code / core / Mage / Core / Functions.php sulla linea 245
Ciò risulta dalla Varien_Simplexml_Config::loadFile()
presentazione ::loadString()
con una stringa che non può essere analizzata:
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);
}
Esistono diverse soluzioni potenziali, incluso l'utilizzo libxml_use_internal_errors
, ma il metodo di chiamata non comunica il $filePath
parametro, quindi il contesto andrebbe perso. Una possibilità sarebbe quella di lanciare un'eccezione più esplicita:
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()
)
);
}
}
Questo almeno fornisce un output come il seguente:
Errore irreversibile: eccezione non rilevata "Mage_Core_Exception" con messaggio " Varien_Simplexml_Config :: loadFile: errore nell'analisi [...] / app / code / local / Some / Example / etc / config.xml : avviso: simplexml_load_string (): entità: riga 4 : errore parser: dichiarazione XML consentita solo all'inizio del documento in [...] / lib / Varien / Simplexml / Config.php sulla riga 534 'in [...] / app / Mage.php sulla riga 594
Ci sono alcuni vantaggi / svantaggi / approcci alternativi da considerare qui?