【发布时间】:2011-10-27 18:49:38
【问题描述】:
我有一个 CI 库,它将 XML 文件中的可翻译内容加载到一个类中,并且该类有一个神奇的 __get 方法,该方法检查该属性是否在被引用时定义,如果是则返回本地化键,或者键名加上 '_#' 让我知道如果没有,则缺少翻译。
很酷。
但是,因为这一切都取决于对象的属性,所以当我在调试 (E_ALL) 中运行时,我会收到很多“通知:未定义等”警告,这很烦人。我不想禁用通知,但我确实想知道如何在这个特定的库中禁用它(如果可能的话)。我可以在每个班级的电话前面加上@,但同样,这也很糟糕。
有什么建议吗?
下面的简化代码sn-ps:
class MY_Translation
{
function _get_keys($lang) {
// load xml translations, could split this into different files..
$translations = new DOMDocument();
$translations->load($_SERVER['DOCUMENT_ROOT']."/xml/translations.xml");
if ($translations) {
$words = $translations->getElementsByTagName("word");
$count = 0;
foreach( $words as $word ){
$name = $word->getAttribute('name');
$trans = $word->childNodes;
if ($trans->length > 0) {
for($i = 0; $i < $trans->length; $i++) {
$child = $trans->item($i);
if ($child->nodeName == $lang) {
$this->$name = $child->nodeValue;
}
}
}
}
}
}
function __get($key){
if (property_exists('MY_Translation',$this->$key)) {
return $this->$key;
} else {
return $key."_#";
}
}
}
XML(仅供参考,所以很清楚发生了什么):
<?xml version="1.0" encoding="UTF-8"?>
<words>
<word name="thing">
<en>thing en</en>
<pt>thing pt</pt>
</word>
</words>
【问题讨论】:
标签: php class codeigniter warnings