У меня есть библиотека CI, которая загружает переводимый контент из XML-файла в класс, и у класса есть магический метод __get, который проверяет, определено ли это свойство при обращении к нему, возвращая локализованный ключ, если это так, илиимя ключа плюс '_ #', чтобы сообщить, что перевод отсутствует, если нет.
Все круто.
Однако, поскольку все это зависит от свойств объекта, я получаю много предупреждений «note: undefined etc ...» при запуске в режиме отладки (E_ALL)и это раздражает.Я не хочу отключать уведомления, но я хочу знать, как отключить это внутри этой конкретной библиотеки (если это возможно).Я мог поставить @ перед каждым звонком в классе, но опять же, это тоже довольно ужасно.
Любые советы?
Ниже приведены упрощенные фрагменты кода:
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>