微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SlimPHP – 扩展树枝(功能)的奇怪错误

我在PHP Slim(最新版本)中有一些简单的应用程序,它是一个简单的网站,从数据库获取数据并将其显示在树枝模板上.没有什么花哨.
只要我不尝试为树枝添加自定义功能,一切都很完美.

当我添加自定义功能到树枝,在一些服务器上(在localhost laragoon工作正常,在具有相同的PHP版本的生产服务器上,我没有收到此错误

致命错误:无法在第4行的… twig.PHP中实例化抽象类Twig_Function

下面是我的twig.PHP错误连接到新的Twig_Function,但老实说,我没有在这里看到任何抽象类…,并且在localhost 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;
};

解决方法:

您需要使用扩展为Twig_Function的Twig_SimpleFunction,因为您无法实例化抽象类.

$function = new Twig_SimpleFunction('fotkalink', function ($path) use ($container) {
    $tab=explode('/',$path);
    return 'mediaimage/'.$tab[0].'-'.$tab[1];
});
$twig->addFunction($function);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐