PhpStorm – Code Completion für Factories

Gerade getestet und für gut befunden. PhpStorm kann ohne fremde Hilfe nicht einfach für jedes Framework Fabrikmethoden auswerten.

Bei Magento sind das z.B. Funktionen wie Mage::getModel('catalog/product') die im Hinterund die Klasse anhand einer XML Struktur ermitteln.

Seit dem letzten Build (129.196) kann man nun selbst über ein alleinstehendes PHP Script die Auflösung in die Hand nehmen.

Das sieht dann z.B. so aus:

namespace PHPSTORM_META {
  /** @noinspection PhpUnusedLocalVariableInspection */
  /** @noinspection PhpIllegalArrayKeyTypeInspection */
  $STATIC_METHOD_TYPES = [
      \Mage::helper('') => [
           'core/string' instanceof \Mage_Core_Helper_String,
      ],
      \Mage::getSingleton('') => [
           'core/resource' instanceof \Mage_Core_Model_Resource,
      ],
      \Mage::getModel('') => [
           'catalog/product' instanceof \Mage_Catalog_Model_Product,
           'rating/rating' instanceof \Mage_Rating_Model_Rating,
      ],
  ];
}

Empfohlen wird die Datei .phpstorm.meta.php zu nennen. Die Datei kann aber auch anders benannt werden. Ich habe mich in diesem Fall an den Standard gehalten. Es wäre schöne, wenn das jeder macht um die Datei in einem fremden Projekt nicht suchen zu müssen.

In der IDE wird das dann wie in diesem Testfall so angezeigt:

PhpStorm Code Completion

Die nächsten möglichen Schritte wären jetzt über ein Script die PHP Datei mit den Meta-Daten zu erzeugen oder die PhpStorm API dynamisch in einem Plugin wie Magicento aufzurufen. Der letzte Weg ist sicherlich der Beste. Es gibt aber ja nicht nur Magento Projekte und man ist jetzt in der Lage „mal eben schnell“ sich die Code Completion einzuschalten.