# 5.2 Plugin System - Class not found // Namespace

**URL:** https://forum.shopware.com/t/5-2-plugin-system-class-not-found-namespace/38577
**Category:** Programmierung
**Created:** [27. Juli 2016 um 13:14 UTC](https://forum.shopware.com/t/5-2-plugin-system-class-not-found-namespace/38577 "2016-07-27T13:14:07Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![itmdesign](https://avatars.discourse-cdn.com/v4/letter/i/a9a28c/32.png) [@itmdesign](https://forum.shopware.com/u/itmdesign)
#### Post date: [27. Juli 2016 um 13:14 UTC](https://forum.shopware.com/t/5-2-plugin-system-class-not-found-namespace/38577/1 "2016-07-27T13:14:07Z")

</div>

Hallo liebe Community,

ich bin gerade dabei ein neues Plugin für Versionan ab Shopware 5.2 zu erstellen und stehe aktuell vor einen kleinen Problem.

Wahrscheinlich sieht man einfach den Wald vor lauter Bäumen nicht mehr.&nbsp; ![Undecided](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/8ae622c50104e84c5003fedfcc22572813a67b41.png "Undecided")

&nbsp;

Zum Problem:

Wie im neuen Plugin System üblich habe ich mein neues Plugin unter _/custom/plugins/VendorFooBar_ hinterlegt und dort eine **VendorFooBar.php** erstellt, welche als Bootstrap dient.  
Meine dort darin enthaltene Klasse VendorFooBar erweitert von Shopware\Components\Plugin.

Soweit so gut. Installation funktioniert, Plugin aktiviert und Event greift auch.

Nun versuche ich einen Shopware 5 Core Service zu erweitern (shopware\_storefront.list\_product\_service) allerdings bekomme ich immer die Fehlermeldung, dass die Klasse nicht gefunden wird.&nbsp;

_Class ‘VendorFooBar\Bundle\StoreFrontBundle\ListProductService’ not found in **/www/htdocs/…** on line **xx** _  
  
_503 Service Unavailable_

Laut Doku zum neuen 5.2 Plugin System sollte er die Klasse doch eigentlich an Hand des Namespaces finden. ([https://developers.shopware.com/developers-guide/plugin-system/#autoloading](https://developers.shopware.com/developers-guide/plugin-system/#autoloading))

&nbsp;

Vielleicht sieht ja jemand schnell den Fehler! 🙂

Vielen dank im voraus!!

&nbsp;

**/custom/plugins/VendorFooBar/VendorFooBar.php**

```
namespace VendorFooBar;

use VendorFooBar\Subscribers\EventSubscriber;
use Shopware\Components\Plugin;
use Shopware\Components\Plugin\Context\InstallContext;
use Shopware\Components\Plugin\Context\UninstallContext;

/**
 * VendorFooBar
 *
 * @copyright xxx
 * @author xxx
 */
class VendorFooBar extends Plugin
{

    /**
     * @inheritdoc
     */
    public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Front_StartDispatch' => 'onRegisterSubscriber',
            'Shopware_Console_Add_Command' => 'onRegisterSubscriber'
        ];

    }

    /**
     * @param \Enlight_Event_EventArgs $args
     */
    public function onRegisterSubscriber(\Enlight_Event_EventArgs $args)
    {
        $subscribers = array(
            new EventSubscriber()
        );

        foreach ($subscribers as $subscriber) {
            $this->container->get('events')->addSubscriber($subscriber);
        }

    }

}

```

&nbsp;

&nbsp;

**/custom/plugins/VendorFooBar/Subscribers/EventSubscriber.php**

```
namespace VendorFooBar\Subscribers;

use Enlight\Event\SubscriberInterface;
use VendorFooBar\Bundle\StoreFrontBundle\ListProductService;

class EventSubscriber implements SubscriberInterface
{
    public static function getSubscribedEvents()
    {
        return array(
            'Enlight_Bootstrap_AfterInitResource_shopware_storefront.list_product_service' => 'registerListProductService'
        );
    }

    /**
     * Register ListProductService
     */
    public function registerListProductService()
    {
        $coreService = Shopware()->Container()->get('shopware_storefront.list_product_service');
        $listProductService = new ListProductService($coreService);
        Shopware()->Container()->set('shopware_storefront.list_product_service', $listProductService);
    }

}

```

&nbsp;

&nbsp;

**/custom/plugins/VendorFooBar/Bundle/StoreFrontBundle/ListProductService.php**

```
namespace VendorFooBar\Bundle\StoreFrontBundle;

use Shopware\Bundle\StoreFrontBundle\Service\ListProductServiceInterface;
use Shopware\Bundle\StoreFrontBundle\Struct;

class ListProductService implements ListProductServiceInterface
{
    /**
     * @var ListProductServiceInterface
     */
    private $service;

    /**
     * @param ListProductServiceInterface $service
     */
    public function __construct(ListProductServiceInterface $service)
    {
        $this->service = $service;
    }

    /**
     * @inheritdoc
     */
    public function getList(array $numbers, Struct\ProductContextInterface $context)
    {
        // ...
    }

    /**
     * @inheritdoc
     */
    public function get($number, Struct\ProductContextInterface $context)
    {
        $products = $this->getList([$number], $context);
        return array_shift($products);
    }

}

```

&nbsp;

---

<div class="post-metadata">

### Author: ![Benjamin\_Cremer](https://avatars.discourse-cdn.com/v4/letter/b/a8b319/32.png) [@Benjamin\_Cremer](https://forum.shopware.com/u/Benjamin_Cremer)
#### Post date: [29. Juli 2016 um 14:01 UTC](https://forum.shopware.com/t/5-2-plugin-system-class-not-found-namespace/38577/2 "2016-07-29T14:01:06Z")

</div>

Hallo,

ich habe mir dein plugin genau nach den oben genannten Verzeichnissen und inhalten zusammenkopiert und es funktioniert auf meiner Installation. Kontrolliere nochmal ob das Mapping zwischen Datinamen und Klassennamen in deinem echtem Plugin eingehalten wird.

Du kannst dir dein Plugin auch noch deutlich vereinfachen indem du das dekorieren des&nbsp;ListProductService direkt über die&nbsp; **services.xml** Datei löst:

&nbsp;

**/custom/plugins/VendorFooBar/Resources/services.xml**

Dadurch sparst du dir die \VendorFooBar\VendorFooBar::getSubscribedEvents() sowie die Callbacks und den EventSubscriber.

Vg,  
Benjamin Cremer&nbsp; ![Shopware](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/86c57fbace799dd4eb1f1b8a2d3bdc1733f0aea1.png "Shopware")

---

<div class="post-metadata">

### Author: ![itmdesign](https://avatars.discourse-cdn.com/v4/letter/i/a9a28c/32.png) [@itmdesign](https://forum.shopware.com/u/itmdesign)
#### Post date: [1. August 2016 um 09:01 UTC](https://forum.shopware.com/t/5-2-plugin-system-class-not-found-namespace/38577/3 "2016-08-01T09:01:32Z")

</div>

Hallo Benjamin,

vielen Dank für deine Antwort und den tollen Lösungsvorschlägen.

Ich habe nun die services.xml angelegt und den ListProductService darüber dekoriert. Dies funktioniert auch einwandfrei,&nbsp;da in der Cache Datei folgender Eintrag und weitere vernünftig erzeugt wird/werden.

```
protected function getVendorFooBar_ListProductServiceService()
{
    return $this->services['vendor_foo_bar.list_product_service'] = new \VendorFooBar\Bundle\StoreFrontBundle\ListProductService(...)
}

```

Allerdings bekomme ich weiterhin folgenden Fehler:

```
Fatal error: Class 'VendorFooBar\Bundle\StoreFrontBundle\ListProductService' not found in /www/htdocs/xxxx/xxxx/var/cache/dev_201607251359/proxies/ShopwareDevce80a801a8d164029ae09dc8b35e92182acc0ac5ProjectContainer.php on line 510
503 Service Unavailable

```

&nbsp;

Das Mapping zwischen den Datei- und Klassennamen habe ich nun mehrfach kontrolliert und kann hier keinen Fehler feststellen. Ich habe testweise mal einen Fehler eingebaut und dort „meckert“ PHPStorm entsprechend&nbsp;auch sofort rum, dass die Klasse nicht gefunden werden kann.

Es kann ja wenn eigentlich nur an diesen zwei Stellen liegen:

1. Die services.xml

&nbsp;

1. Die Klasse (/plugins/VendorFooBar/Bundle/StoreFrontBundle/ListProductService.php)

&nbsp;

Ich benutze übrigens Shopware 5.2.3.

&nbsp;

Vielen Dank für deine Mühe und viele Grüße.

Chris.

---

<div class="post-metadata">

### Author: ![daboss](https://avatars.discourse-cdn.com/v4/letter/d/43a26b/32.png) [@daboss](https://forum.shopware.com/u/daboss)
#### Post date: [12. April 2018 um 10:03 UTC](https://forum.shopware.com/t/5-2-plugin-system-class-not-found-namespace/38577/4 "2018-04-12T10:03:12Z")

</div>

Das ist zwar schon etwas älter, aber für eventuell weitere Mitlesende: Eine Fehlerquelle dafür kann ein Buchstabendreher im Dateinamen sein… Hat mich gerade etwas aufgehalten, bis ich das gesehen habe…
