Адаптер APCu & amp; Symfony 3.3 — & gt; ошибка

Я пытаюсь подключить APCu к тестовому проекту Symfony 3.3.
Я получаю ошибку, когда добавляю ApcuAdapter в AppKernel.php,
Вот список того, что я сделал:

  1. в ./app/AppKernel.php я добавил «новую» строку в $bundles в public function registerBundles():

    public function registerBundles()
    {
    $bundles = [
    ... ,
    new Symfony\Component\Cache\Adapter\ApcuAdapter()
    ];
    
    ...
    
    return $bundles;
    }
    
  2. Открыт сайт проекта. Это показывает ошибку:

Попытка вызвать неопределенный метод с именем «getName» класса «Symfony \ Component \ Cache \ Adapter \ ApcuAdapter».

(./ означает корневую папку проекта)

Пожалуйста, скажите мне, почему происходит эта ошибка и как подключить этот адаптер к платформе Symfony. Спасибо.

0

Решение

Я нашел решение где-то на сайте фреймворка.

так или иначе, мы должны использовать не Adapter, но Simple вместо.
кажется очень нелогичным для меня.

Итак, Сервис теперь работает и выглядит так:

    <?php

namespace AppBundle\Service;

use Symfony\Component\Cache\Simple\ApcuCache;

class ApcuTester
{
public function __construct
(
)
{

}

public function testMe()
{
$cache = new ApcuCache();

$TestVar_dv = 0;
$TestVar_vn = 'TestVar';
$TestVar = NULL;

//$cache-> deleteItem($TestVar_vn); // dbg

// Read
if ( $cache->hasItem($TestVar_vn) )
{
$TestVar = $cache->get($TestVar_vn);
}
else
{
$cache->set($TestVar_vn, $TestVar_dv);
$TestVar = $TestVar_dv;
}

// Modify
$TestVar++;

// Save
$cache->set($TestVar_vn, $TestVar);

// Return
return $TestVar;
}
}

И Контроллер, который выполняет этот Сервис, выглядит так:

    <?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

use AppBundle\Service\MessageGenerator;
use AppBundle\Service\ApcuTester;

class LuckyController extends Controller
{
/**
* @Route("/lucky/number", name="lucky")
*/
public function numberAction
(
Request $request,
MessageGenerator $messageGenerator,
ApcuTester $apcuTester
)
{
$lucky_number = mt_rand(0, 100);

$message = $messageGenerator->getHappyMessage();

$testvar = $apcuTester->testMe();

$tpl = 'default/lucky_number.html.twig';
$tpl_vars =
[
'lucky_number' => $lucky_number,
'message' => $message,
'testvar' => $testvar
];

return $this->render($tpl, $tpl_vars);
}
}

Если бы я написал то же самое на чистом PHP, я бы сделал это на час раньше 🙂 Ох уж эти сумасшедшие фреймворки …

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector