# Error: Using $this when not in object context

**URL:** <https://forum.shopware.com/t/error-using-this-when-not-in-object-context/95145>\
**Category:** Programmierung\
**Created:** [6. Juli 2022 um 06:58 UTC](https://forum.shopware.com/t/error-using-this-when-not-in-object-context/95145 "2022-07-06T06:58:17Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [6. Juli 2022 um 06:58 UTC](https://forum.shopware.com/t/error-using-this-when-not-in-object-context/95145/1 "2022-07-06T06:58:17Z")

</div>

Aktuell stehe ich total auf dem Schlauch. Will ein kleines Test-Plugin für SW6 erstellen mit einen eigenen Service, eine extra Class wo später weitere Funktionen hinterlegt werden sollen. Soweit geht der Plan auf, allerdings bei der Einbindung von Datenbank Connection scheiter der Spaß.

```auto
Error: Using $this when not in object context

```

Ich weiß nicht wie es zu dieser Fehlermedung kommt. ok, Mein Test sieht wie folgt aus:

TestPluginTool.php

```auto
namespace TestPlugin\Util;

use Doctrine\DBAL\Connection;

class TestPluginTool {

  private $systemConfigService;
  private $Connection;

  public function __construct( Connection $Connection )
  {
    $this->Connection = $Connection;
  }

  public function test()
  {
    $result = $this->Connection->..... ????
   }

}

```

services.xml

```auto
  <service id="TestPlugin\Util\TestPluginTool">
  <argument type="service" id="Doctrine\DBAL\Connection"/>
  </service>

```

In einem eigenen Controller rufe ich dann meine Test-Funktion einfach wie folgt auf:

```auto
TestPluginTool::test();

```

Geht, jedoch mit oben genannten Fehler. Verstehe ich nicht. Ich sehe nicht das Problem ☹

---

<div class="post-metadata">

**Author:** ![abdullah](https://avatars.discourse-cdn.com/v4/letter/a/aeb1de/32.png) [@abdullah](https://forum.shopware.com/u/abdullah)\
**Post date:** [6. Juli 2022 um 07:20 UTC](https://forum.shopware.com/t/error-using-this-when-not-in-object-context/95145/2 "2022-07-06T07:20:54Z")

</div>

Naja du versucht mit `TestPluginTool::test()` eine statische Methode aufzurufen, die es nicht gibt.

Du müsstest ein Objekt der Klasse TestPluginTool erzeugen und dann die test()-Methode aufrufen.

z. B. $testPluginTool = new …  
$testPluginTool-\>test().

vg

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [6. Juli 2022 um 07:23 UTC](https://forum.shopware.com/t/error-using-this-when-not-in-object-context/95145/3 "2022-07-06T07:23:00Z")

</div>

Ah bin ich blöd! Stimmt!

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [6. Juli 2022 um 07:37 UTC](https://forum.shopware.com/t/error-using-this-when-not-in-object-context/95145/4 "2022-07-06T07:37:32Z")

</div>

Hm, dann bekomme ich wieder Probleme mit der function \_\_construct(…)

```auto
Too few arguments to function TestPlugin\Util\TestPluginTool::__construct()

```

Versuche mit :

```auto
    $TestPluginTool = new TestPluginTool( $this->Connection );
    $TestPluginTool->test();

```

sehen nicht so schön aus. Ich würde gern die DB Connection erst im TestPluginTool anlegen wollen und nicht übergeben. Ne, irgendwo habe ich noch ein grunsätzliches Problem.

---

<div class="post-metadata">

**Author:** ![abdullah](https://avatars.discourse-cdn.com/v4/letter/a/aeb1de/32.png) [@abdullah](https://forum.shopware.com/u/abdullah)\
**Post date:** [6. Juli 2022 um 08:05 UTC](https://forum.shopware.com/t/error-using-this-when-not-in-object-context/95145/5 "2022-07-06T08:05:18Z")

</div>

Dein Konstruktor erwartet nun Mal die Connection. Also muss die Übergeben werden.

Du kannst auch „Dependency injection“ benutzen und das TestPluginTool deinem Controller als Argument in der services.xml übergeben.

---

<div class="post-metadata">

**Author:** ![R4M](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/r4m/32/9983_2.png) [@R4M](https://forum.shopware.com/u/R4M)\
**Post date:** [6. Juli 2022 um 08:11 UTC](https://forum.shopware.com/t/error-using-this-when-not-in-object-context/95145/6 "2022-07-06T08:11:59Z")

</div>

Ja, ich habe es als Service mit übergeben:

```auto
<argument type="service" id="TestPlugin\Util\TestPluginTool"/>

```

dann sieht die Sache schon besser aus. Somit kann ich zumindest im Controller ggf. auch in einem Subcripter darauf zugreifen. Jetzt knobel ich, wie ich das alles im ScheduledTaskHandler einbinde.
