<?php

namespace Perfumer\Framework\Application;

use Perfumer\Component\Container\Container;

abstract class AbstractApplication
{
    /**
     * @return void
     */
    public function run()
    {
        $this->before();

        $container = new Container();
        $container->registerBundles($this->getBundles());

        $this->after();

        $container->get('proxy')->run();
    }

    /**
     * @return array
     */
    protected function getBundles()
    {
        return [];
    }

    /**
     * @return void
     */
    protected function before()
    {
    }


    /**
     * @return void
     */
    protected function after()
    {
    }
}
<?php

namespace Perfumer\Framework\Application;

use Perfumer\Component\Container\Container;

abstract class AbstractApplication
{
    /**
     * @return void
     */
    public function run()
    {
        $this->before();

        $container = new Container();
        $container->registerBundles($this->getBundles());

        $this->after();

        $container->get('proxy')->run();
    }

    /**
     * @return array
     */
    abstract public function getBundles();

    /**
     * @return void
     */
    protected function before()
    {
    }


    /**
     * @return void
     */
    protected function after()
    {
    }
}
Change getBundles() method to abstract
Change getBundles() method to abstract
