Magentoは、エラーの表示に関しては(あるべきところに)かなり保護的です。開発者モードが有効になっている場合(開発中にそうであるように)、アプリケーションはランタイムエラーフィードバックをユーザーにバブルアップさせます。XMLコンパイルエラーの場合、このフィードバックはほとんど役に立ちません。
致命的エラー:メッセージ「警告:simplexml_load_string():エンティティ:行4:パーサーエラー:[...] / lib / Varien / Simplexml / Configのドキュメントの先頭でのみ許可されるXML宣言」でキャッチされない例外「例外」。 [...] app / code / core / Mage / Core / functions.phpの245行目にある510行目のphp
これは、解析できない文字列をVarien_Simplexml_Config::loadFile()表示::loadString()した結果です。
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);
}使用を含む、いくつかの潜在的なソリューションがあります libxml_use_internal_errorsが、呼び出し元のメソッドは$filePathパラメーターを通信しないため、コンテキストが失われます。1つの可能性は、より明示的な例外をスローすることです。
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()
            )
        );
    }
}これにより、少なくとも次のような出力が提供されます。
致命的なエラー:メッセージ ' Varien_Simplexml_Config :: loadFile:[...] / app / code / local / Some / Example / etc / config.xmlの解析中にエラーが発生し、キャッチされていない例外' Mage_Core_Exception ':警告:simplexml_load_string():エンティティ:行4 :パーサーエラー:XML宣言は、[...] / app / Mage.phpの594行目の[...] / lib / Varien / Simplexml / Config.phpの534行目のドキュメントの先頭でのみ許可されています
ここで考慮すべき利点/欠点/代替アプローチはありますか?