$this->get - Parameter in Getter herausfinden?

Hallo,

ich habe eine allgemeine Frage zur Programmierung.

 

Beispiel aus dem Handbuch:  

 $criteriaFactory = $this-\>get(' **_shopware\_search.store\_front\_criteria\_factory_**');

 

Woher weiß ich, was ich als Parameter in den Getter geben muss? Autovervollständigung gibts dafür ja leider nicht in PHP-Storm…

Gibts ein Nachschlagwerk oder wie macht ihr das?

 

viele Grüße

 

 

Klar gibt es Autovervollständigung für PHPStorm. In der Doku werden mehrere Plugins genannt, mit denen man das nachrüsten kann! Glaube 3 Stück waren es. PHP Toolbox, Symfony und das Shopware Plugin. Aber auf den getter müsste PHP eigtl auch schon von alleine kommen.

https://developers.shopware.com/developers-guide/phpstorm/#shopware-phpstorm-plugin

ich habe alle diese Plugins installiert.

Autovervollständigung bekomm ich irgendwie nur, wenn ich den Typ einer Variable mit @var angebe.

Aber für den Getter gibts leider überhaupt nix…

Komisch. Passiert bei mir automatisch sobald ich das “>” eingebe.

@arnebecker‍

 

ja das schon. Wenn ich den Parameter ’ shopware_search.store_front_criteria_factory’ mal im Getter hab, dann bekomm ich danach auch Autovervollständigung.

Aber meine Frage ist: Wie krieg ich den String-Parameter für den Getter raus? Woher weiß ich, welchen String ich nehmen muss um etwas Bestimmtes zu bekommen?

Ich komm aus dem Java-Umfeld, da sind solche Sachen ja eher verpöhnt und ich bin gewohnt mit „richtigen“ Gettern zu arbeiten…

Einfach anfangen zu tippen :wink:

Du kannst auch in deinem Projekt mal nach der Datei service.xml suchen. Da findest du welche für den Core, jedes Bundle und für die neueren Plugins. Da werden alle Services für die DI definiert.

Was meinst du denn mit „richtigen“ Gettern? Wie wird sowas denn in Java gelöst? Ich bin neugierig :wink:

Naja, ich könnte mir das analog zu dem Beispiel container->get(‘shopware_search.store_front_criteria_factory’) in Java so vorstellen:

StoreFront storefront = container.getStoreFront();

CriteriaFactory = storefront.getCriteriaFactory();

 

oder halt als Fluent-Interface:

CriteriaFactory = container.getStoreFront().getCriteriaFactory();

 

dann hätte man alle Methoden per Autovervollständigung zur Verfügung und sogar noch pro Methode (Getter) eine Dokumentation, so nach dem Motto “Nimm diesen Getter, wenn du eine Factory für Suchkriterien willst”.

 

 

Dann muss der Service aber fest kodiert werden in der Klasse (als Methode). Dann kann man keine Services zur Laufzeit hinzufügen. Aber ja. In strikt typisierten Sprachen muss das sicher anders laufen.