마 젠토는 오류 표시와 관련하여 상당히 보호 적입니다. 개발자 모드가 활성화되면 (개발 중이어야 함) 응용 프로그램은 런타임 오류 피드백이 사용자에게 버블 링되도록합니다. 이 피드백은 쓸모가 없지만 XML 컴파일 오류의 경우 :
치명적인 오류 : '경고 : simplexml_load_string ()'메시지와 함께 '예외'예외가 발생했습니다. 엔티티 : 행 4 : 구문 분석기 오류 : [...] / lib / Varien / Simplexml / Config의 문서 시작시에만 XML 선언이 허용됩니다. 245 행의 [...] app / code / core / Mage / Core / functions.php의 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
매개 변수를 전달하지 않으므로 컨텍스트가 손실됩니다. 보다 명확한 예외를 던질 가능성이 있습니다.
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 선언은 594 행의 [...] / app / Mage.php의 534 '행에있는 [...] / lib / Varien / Simplexml / Config.php의 문서 시작시에만 허용됩니다.
여기서 고려해야 할 몇 가지 장점 / 단점 / 대체 방법이 있습니까?