У меня есть простое приложение в PHP Slim (новейшая версия), это простой веб-сайт, который получает данные из базы данных и отображает их на шаблонах веток. Ничего особенного. Все работает отлично, пока я не пытаюсь добавить пользовательскую функцию к веточке.SlimPHP - странная ошибка с расширяющейся веточкой (функция)
Когда я добавить пользовательскую функцию прутик, на некоторых серверах (на локальном хосте laragoon работает отлично, на производственном сервере с той же версией PHP не я получаю эту ошибку:
Фатальная ошибка: Невозможно создать абстрактный Twig_Function класса в ... twig.php на линии 4
ниже моего twig.php - ошибка связана с новой Twig_Function, но если честно я не вижу абстрактного класса здесь ..., и на локальном хосте Laragon это работающий штраф, по производству
Кто-нибудь знает, как решить эту проблему?
<?php
$twig=$container->get('view')->getEnvironment();
$function = new Twig_Function('fotki', function ($id) use ($container) {
$files=array();
$dir=opendir($container->get('settings')['fotki_path'].(int)$id);
while($file=readdir($dir)){
if((strlen($file)>3)&&(substr($file,-3)=='jpg')){
array_push($files,(int)$id.'/'.$file);
//
}
}
closedir($dir);
return $files;
});
$twig->addFunction($function);
$function = new Twig_Function('fotkalink', function ($path) use ($container) {
$tab=explode('/',$path);
return 'mediaimage/'.$tab[0].'-'.$tab[1];
});
$twig->addFunction($function);
Декларация зрения в контейнере:
$container['view'] = function ($c) {
$a=[];
if($c['settings']['env']=='prod')
$a=[ 'cache' => __DIR__.'/../cache'];
$view = new \Slim\Views\Twig(__DIR__.'/../templates', $a);
$basePath = rtrim(str_ireplace('index.php', '', $c['request']->getUri()->getBasePath()), '/');
$view->addExtension(new Slim\Views\TwigExtension($c['router'], $basePath));
return $view;
};
ehhh sure - вы на 100% прав. Я не знаю, почему я этого не видел:/ –
Ну, документы используют Twig_Function в примерах, когда вы его просматриваете. Поэтому я действительно счастлив, что этот вопрос существует. – Tschallacka