Magento, hataların görüntülenmesi konusunda oldukça koruyucu (olması gerektiği gibi). Geliştirici modu etkinleştirildiğinde (geliştirme sırasında olması gerektiği gibi), uygulama çalışma zamanı hatası geri bildiriminin kullanıcıya ulaşmasını sağlar. XML derleme hataları için bu geri bildirim oldukça işe yaramaz olsa da:
Önemli hata: 'İleti ile yakalanmamış istisna' İstisna 'Uyarı: simplexml_load_string (): Varlık: satır 4: ayrıştırıcı hatası: XML bildirimine yalnızca [...] / lib / Varien / Simplexml / Config içindeki belgenin başlangıcında izin verilir. php on line 510 'in [...] app / code / core / Mage / Core / function.php on line 245
Bu, ayrıştırılamayan bir dize ile Varien_Simplexml_Config::loadFile()
sunulmasından kaynaklanır ::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);
}
Kullanmak da dahil olmak üzere çeşitli potansiyel çözümler vardır libxml_use_internal_errors
, ancak çağıran yöntem $filePath
parametreyi iletmez , bu nedenle bağlam kaybolur. Bir olasılık daha açık bir istisna atmak olabilir:
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()
)
);
}
}
Bu en azından aşağıdaki gibi çıktı sağlar:
Önemli hata: ' Varien_Simplexml_Config :: loadFile: mesaj ayrıştırma hatası olan' Mage_Core_Exception 'yakalanmamış istisnası [...] / app / code / local / Bazı / Örnek / etc / config.xml : Uyarı: simplexml_load_string (): Varlık: satır 4 : ayrıştırıcı hatası: XML bildirimine yalnızca [...] / app / 594 satırındaki [...] / app / Mage.php satırındaki [...] / lib / Varien / Simplexml / Config.php içinde belgenin başlangıcında izin verilir
Burada dikkate alınması gereken bazı avantajlar / dezavantajlar / alternatif yaklaşımlar var mı?