Magento त्रुटियों के प्रदर्शन के बारे में काफी सुरक्षात्मक है (जैसा कि यह होना चाहिए)। जब डेवलपर मोड सक्षम किया जाता है (जैसा कि यह विकास के दौरान होना चाहिए), तो एप्लिकेशन उपयोगकर्ता को रन-अप करने के लिए रनटाइम त्रुटि प्रतिक्रिया की अनुमति देता है। XML संकलन त्रुटियों के लिए हालांकि यह प्रतिक्रिया काफी बेकार है:
घातक त्रुटि: संदेश के साथ अपवाद अपवाद 'अपवाद' चेतावनी: simplexml_load_string (): इकाई: पंक्ति 4: पार्सर त्रुटि: XML की घोषणा केवल दस्तावेज़ में [...] / lib / Venen / Simplexml / config में शुरू की जाती है। php ऑन लाइन 510 '[...] ऐप / कोड / कोर / मैज / कोर / functions.php ऑन लाइन 245
यह एक स्ट्रिंग के साथ 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: त्रुटि पार्सिंग [...] / एप्लिकेशन / कोड / स्थानीय / कुछ / उदाहरण / config.xml : संदेश के साथ अनियोजित अपवाद' Mage_Core_Exception ' : चेतावनी: simplexml_load_string (): इकाई 4। : पार्सर त्रुटि: XML घोषणा केवल दस्तावेज़ में [...] / lib / Varien / Simplexml / Config.php ऑन लाइन 534 'में [...] / app / Mage.php लाइन 594 पर अनुमति दी
क्या यहां पर विचार करने के लिए कुछ फायदे / नुकसान / वैकल्पिक दृष्टिकोण हैं?