PhpStorm 6.0.1 EAP build 129.177/196

We continue to refine the IDE and work on plugin APIs. This build addresses both aspects by implementing a much requested feature purely relying on php-openapi. It required numerous adjustments – and much more are still pending, but we have a great progress.

The generic Factory Method pattern support was added. By adding simple external metadata you can help IDE to deduce return types from the invocation arguments. This will reduce the number of required @var annotations in code employing the pattern, wich is quite common in modern frameworks. More info on using metadata.

The feature above is implemented using PHP open API. The introduced Extension Point also allows 3rd party plugin creators to provide type info automatically using framework’s established practices and configuration. The API is still highly unstable (and has already evolved since this build) but we will provide guidance. Check out tutorials on plugin development.

Other notable changes

  • PHP type inference for variables should now correctly work with Fluent Interface style call chains – again removing the need for @var annotations.
  • PHP completion for array indexes has been significantly improved
  • PHP inspection got a couple of new ones – division by zero and invalid string operation
  • Details on resolved tracker issues

Download PhpStorm 6.0.1 EAP for your platform and please report any bugs and feature request to out Issue Tracker. Automatic update via patch is also available.

Develop with pleasure!
-JetBrains Web IDE Team

This blog is permanently closed.

For up-to-date information please follow to corresponding WebStorm blog or PhpStorm blog.

This entry was posted in Early Access Preview, PhpStorm and tagged . Bookmark the permalink.

24 Responses to PhpStorm 6.0.1 EAP build 129.177/196

  1. Mark Badolato says:

    I posted this a few months back and it good some good reception, so I thought I’d post it again. We built a dark color theme that mimics the scheme used in the Symfony2 and Doctrine2 documentation code snippets. If anyone is interested, it’s available (with a few screenshots) at

  2. Jonathan Cardoso [JCM] says:

    It’s possible to have automatic metadata if the string used as argument is just some part of the namespace? Or even if the string itself is the class name. Like, the following:
    $orm->getRepository( 'Entity\User' ); //return Entity\User instance.
    $helper->getHelper( 'MyHelper' ); //return App\Namespace\MyHelper instance, so this method should return App\Namespace\{argument passed}

  3. Maciej says:

    After update i get a Message box saying

    Plugin com.intellij failed to initialize and will be disabled:
    Cyclic dependency: [class com.intellij.psi.stubs.StubIndexImpl]
    Please restart JetBrains PhpStorm

    this box shows up 2 times
    and another one

    Plugin com.intellij failed to initialize and will be disabled:
    Please restart JetBrains PhpStorm

  4. Crashes after update to this build, PHPStorm not run. Ubuntu 12.10 x64 generic 3.5.0-26. Logfile:

  5. Problem was solved by the closing of the previous PHPStorm process:
    ps ax | grep phpstorm

  6. Alexey Gopachenko says:

    We might have a packaging issue. Please stand by. We give instructions / issue small patch ASAP.

  7. Alexey Gopachenko says:

    Ok, packaging issue confirmed, patch-update will be available in a hour.

  8. Zyava says:

    “Details on resolved tracker issues” link doesn’t work

  9. Alexey Gopachenko says:

    Patches are UP. Full builds are also available.
    In tracker its now EAP 129.177&196

  10. This latest version for OSX is really really flaky.

    The php structure won’t load.
    When I open the app I get about 5 java errors ( Plugin com.intellij failed ).

  11. 1.) Can you explain these and when they are needed?

    /** @noinspection PhpUnusedLocalVariableInspection */
    /** @noinspection PhpIllegalArrayKeyTypeInspection */

    2.) If the factory methods accept several addition parameters such as those for dependency injection can we just omit them for this purpose?

    3.) Does it support PHP 5.3 array syntax, i.e. array(…) vs. […]?

    4.) Why is PhpStorm indicating that all the class names are undefined?

    5.) Would you be so kind as to verify that I understood correctly how this should be used: .phpstorm.meta.php?

    • Alexey Gopachenko says:

      1) To have a “green” file.
      2) Add anything suitable there to have a green file.
      3) Most likely, but its better to stick to current syntax. This file is for IDE only.
      4) Note the PHPSTORM_META namespace. You should use FQNs.
      5) see(4) Use FQNs for class references, i.e. \RESTian_Application_Xml_Parser

      • Hi @Alexey,


        1) What’s a “green” file?

        2) Do you mean I need to add hypothetical parameters, i.e. like this?

        \RESTIan::get_new_parser('', new \RESTian_Request(), new \RESTian_Response())

        3) Since my projects are configured for PHP 5.3 this is what PhpStorm does when I use PHP 5.4 syntax:

        4.) Ah, thanks. I’ve never used namespaces as they are not generally used for WordPress plugins yet given WordPress still supports 5.2.4.

        • Alexey Gopachenko says:

          1) Well, the file with no syntax and inspection errors. “Green” by the color of inspection status indicator on the top of vertical scrollbar. We want to have only real errors.

          2) yes, or just (”, null, null) or anything that will keep file green.

          3) I see. Then you can use 5.3 syntax of course. We, again, want the file green to be able to spot any real errors, i.e. unresolved method or class references.

  12. Adrien Brault says:

    Hey, thanks for this!

    I’ve started developping a symfony2 plugin. It currently can detect services types retrieved from the dependency injection container.

    The plugin url is (screenshot/gif included :>)

    • Alexey Gopachenko says:

      Great! This is what we expect to be eventually done for all major frameworks/packages.

      Quick note: try to stick to classes from php-openapi.jar only, i.e MethodReference instead of MethodReferenceImpl, etc. The naming convention is most obvious.

      We’ll be providing more tutorials – and extension points in upcoming builds.

    • Alexey Gopachenko says:

      Your code won’t work with multiple projects open – the instance is a singleton, so you should either make it a project component or use element’s project’s user data to hold yours. Look at updated sample code.

  13. I’ve added two new actions to Magicento, one for generating the PHPSTORM_META namespace with all the classes and factories (this actions is accessible everywhere with Alt+M like always), and another one for updating that file with the class for the factory over the current cursor (updating is faster than generating the whole file).

Comments are closed.