PhpStorm 6.0.1 EAP build 129.177/196

Alexey Gopachenko

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

Comments below can no longer be edited.

24 Responses to PhpStorm 6.0.1 EAP build 129.177/196

  1. Mark Badolato says:

    April 5, 2013

    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:

    April 5, 2013

    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:

    April 5, 2013

    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. Stanislav Butsenko says:

    April 5, 2013

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

    • Heart says:

      April 5, 2013

      same here… kill process worked

    • Rafi B. says:

      April 5, 2013

      Yup. Lots of exceptions on first run, killed processes, rerun and works fine. (Xubuntu 12.10 x64)

  5. Stanislav Butsenko says:

    April 5, 2013

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

  6. Alexey Gopachenko says:

    April 5, 2013

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

  7. Alexey Gopachenko says:

    April 5, 2013

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

  8. Zyava says:

    April 5, 2013

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

    • Alexey Gopachenko says:

      April 5, 2013

      I just renamed the build in tracker – link fixed in a minute.

  9. Alexey Gopachenko says:

    April 5, 2013

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

    • Rafi B. says:

      April 5, 2013


  10. Adam Patterson says:

    April 6, 2013

    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. Mike Schinkel says:

    April 7, 2013

    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:

      April 7, 2013

      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

      • Mike Schinkel says:

        April 8, 2013

        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:

          April 8, 2013

          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:

    April 7, 2013

    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:

      April 7, 2013

      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:

      April 7, 2013

      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. Enrique Piatti says:

    April 8, 2013

    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).