Как исправить ошибку: Fatal error: Uncaught Error: Call to a member function __toString() on null in...
Добрый день!
Версия PHP7
Установлен плагин caseChanger
Данный плагин всегда запускался, сейчас при установке на новый сайт стал давать ошибки:
Fatal error: Uncaught Error: Call to a member function __toString() on null in /var/www/sites/data/www/site.ru/core/cache/includes/elements/modsnippet/87.include.cache.php:56 Stack trace: #0 /var/www/sites/data/www/site.ru/core/model/modx/modscript.class.php(76): include() #1 /var/www/sites/data/www/site.ru/core/model/modx/modx.class.php(1859): modScript->process(NULL) #2 /var/www/sites/data/www/site.ru/core/model/modx/filters/modoutputfilter.class.php(676): modX->runSnippet('caseChanger', Array) #3 /var/www/sites/data/www/site.ru/core/model/modx/modparser.class.php(942): modOutputFilter->filter(Object(pdoTag)) #4 /var/www/sites/data/www/site.ru/core/components/pdotools/model/pdotools/pdoparser.class.php(305): modTag->filterOutput() #5 /var/www/sites/data/www/site.ru/core/components/pdotools/model/pdotools/pdoparser.class.php(261): pdoTag->process() #6 /var/www/sites/data/www/site.ru/core/model/modx/modparser.class.php(251): pdoParser->processTag(Object(pdoTag), fals in /var/www/sites/data/www/site.ru/core/cache/includes/elements/modsnippet/87.include.cache.php on line 56
Вот код сниппета:
Версия PHP7
Установлен плагин caseChanger
Данный плагин всегда запускался, сейчас при установке на новый сайт стал давать ошибки:
Fatal error: Uncaught Error: Call to a member function __toString() on null in /var/www/sites/data/www/site.ru/core/cache/includes/elements/modsnippet/87.include.cache.php:56 Stack trace: #0 /var/www/sites/data/www/site.ru/core/model/modx/modscript.class.php(76): include() #1 /var/www/sites/data/www/site.ru/core/model/modx/modx.class.php(1859): modScript->process(NULL) #2 /var/www/sites/data/www/site.ru/core/model/modx/filters/modoutputfilter.class.php(676): modX->runSnippet('caseChanger', Array) #3 /var/www/sites/data/www/site.ru/core/model/modx/modparser.class.php(942): modOutputFilter->filter(Object(pdoTag)) #4 /var/www/sites/data/www/site.ru/core/components/pdotools/model/pdotools/pdoparser.class.php(305): modTag->filterOutput() #5 /var/www/sites/data/www/site.ru/core/components/pdotools/model/pdotools/pdoparser.class.php(261): pdoTag->process() #6 /var/www/sites/data/www/site.ru/core/model/modx/modparser.class.php(251): pdoParser->processTag(Object(pdoTag), fals in /var/www/sites/data/www/site.ru/core/cache/includes/elements/modsnippet/87.include.cache.php on line 56
Вот код сниппета:
<?php
/*
* $input / $w - входное слово в режиме фильтра / сниппета
* $p - падеж ['']
* $m - множественное (false)
* $debug - режим отладки (false)
*/
$encoding = end(explode('.', $modx->getOption('encoding', $scriptProperties, "ru_RU.UTF-8")));
$padej = [
'Р'=>'Р', 'Д' =>'Д', 'В'=>'В', 'Т'=>'Т', 'П'=>'П', 'П-о'=>'П-о', // Русскими буквами
'R'=>'Р', 'D' =>'Д', 'V'=>'В', 'T'=>'Т', 'P'=>'П', 'Po'=>'П-о', // Латиницей
1=>'Р', 2 =>'Д', 3=>'В', 4=>'Т', 5=>'П', 6=>'П-о', // Цифрами
];
$out = ''; // default
// Проверяем данные на входе
if(!$input && empty($w)) return $out;
// Если в режиме фильтра переданы опции
if(!empty($options)){
parse_str($options);
}
//Задана ли отладка
$debug = empty($debug)? false : true;
//Слово - в URL строку
$w = rawurlencode($input? $input : $w);
//Берем падеж
$p = !empty($p)? $p : 0;
//Форматируем
$p = (int)$p? (int)$p : mb_strtoupper($p, $encoding);
//Если падежа нет или он левый
if(!$p || empty($padej[$p])){
return $debug? 'Неверно задан падеж' : $out;
} else {
$p = $padej[$p];
}
//Множественное число
$m = empty($m)? false : 'множественное';
//Подключаем/отключаем отлов ошибок libXML
libxml_use_internal_errors($debug);
//Получаем объект от Морфера
$xml = simplexml_load_file('http://ws3.morpher.ru/russian/declension?s=' . $w);
//По условиям вытаскиваем из объекта нужное
if($m) { //Если множественное
//Если передано сразу во множественном - вложенного объекта не будет
$out .= isset($xml->$m)? $xml->$m->$p->__toString() : $xml->$p->__toString();
}else{ // Если ед.ч.
$out .= !empty($xml->$p)? $xml->$p->__toString() : '';
}
//Если включен вывод ошибок
if($debug){
$errors = [];
foreach (libxml_get_errors() as $error) {
$errors[] = $error;
}
$out .= "\r\n". implode("\r\n", $errors);
}
//Вырубаем буфер ошибок
libxml_clear_errors();
//Отдаем результат
return $out;
Подскажите как это исправить можно? СПАСИБО