Я только что установил вчера apc, и теперь я получаю эту ошибку:
FatalErrorException: Error: Cannot instantiate abstract class ACME\WebBundle\Menu\MenuBuilder in /var/www/app/cache/dev/appDevDebugProjectContainer.php line 743
и в этой строке есть:
protected function getEposMain_MenuBuilderService() { return $this->services['epos_main.menu_builder'] = new \ACME\WebBundle\Menu\MenuBuilder($this->get('knp_menu.factory')); }
Кто-нибудь знает, что это значит и что я могу с этим сделать?
services.yml
services: epos_main.menu_builder: class: ACME\WebBundle\Menu\MenuBuilder arguments: ["@knp_menu.factory"] epos_main.menu.main: class: Knp\Menu\MenuItem # the service definition requires setting the class factory_service: epos_main.menu_builder factory_method: createMainMenu arguments: - @request - @twig - 'ACMEWebBundle:Menu:menu.html.twig' scope: request # needed as we have the request as a dependency here tags: - { name: knp_menu.menu, alias: main } # The alias is what is used to retrieve the menu epos.twig.epos_extension: class: ACME\WebBundle\Twig\ePOSTwigExtension tags: - { name: twig.extension }
немного кода класса MenuBuilder:
namespace ACME\WebBundle\Menu; use Knp\Menu\FactoryInterface; use Symfony\Component\HttpFoundation\Request; class MenuBuilder { private $factory; /** * @param FactoryInterface $factory */ public function __construct(FactoryInterface $factory) { $this->factory = $factory; } public function createMainMenu(Request $request) { $menu = $this->factory->createItem('root'); $menu->setChildrenAttribute('class', 'nav'); ... ... return $menu; } }
Ну, ошибка довольно понятна. Вы не можете создавать абстрактные классы в соответствии с правилами ООП!
Ваш MenuBuilder
является abstract
классом, и вы пытаетесь создать экземпляр new
ключевого слова, которое невозможно.
Если ваш класс MenuBuilder был абстрактным в какой-то момент, и вы изменили его на конкретный класс, возможно, у APC все еще есть старая версия, скрывающаяся вокруг (в памяти).
Попробуйте перезагрузить свой веб-сервер.