Early Access Program PhpStorm

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


Comments below can no longer be edited.

24 Responses to PhpStorm 6.0.1 EAP build 129.177/196

  1. Avatar

    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 http://cordoval.github.com/Symfony2Colors/.

  2. Avatar

    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.
    and
    $helper->getHelper( 'MyHelper' ); //return App\Namespace\MyHelper instance, so this method should return App\Namespace\{argument passed}

  3. Avatar

    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:
    null
    Please restart JetBrains PhpStorm

  4. Avatar

    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: https://dl.dropbox.com/u/2084786/tmp/phpstorm.log

    • Avatar

      Heart says:

      April 5, 2013

      same here… kill process worked

    • Avatar

      Rafi B. says:

      April 5, 2013

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

  5. Avatar

    Stanislav Butsenko says:

    April 5, 2013

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

  6. Avatar

    Alexey Gopachenko says:

    April 5, 2013

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

  7. Avatar

    Alexey Gopachenko says:

    April 5, 2013

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

  8. Avatar

    Zyava says:

    April 5, 2013

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

    • Avatar

      Alexey Gopachenko says:

      April 5, 2013

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

  9. Avatar

    Alexey Gopachenko says:

    April 5, 2013

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

    • Avatar

      Rafi B. says:

      April 5, 2013

      Thanks!!

  10. Avatar

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

    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?

    • Avatar

      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

      • Avatar

        Mike Schinkel says:

        April 8, 2013

        Hi @Alexey,

        Thanks.

        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:

        http://screenshots.newclarity.net/skitched-20130408-003013.png

        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.

        • Avatar

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

    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 http://plugins.jetbrains.com/plugin?pr=&pluginId=7219 (screenshot/gif included :>)

    • Avatar

      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.

    • Avatar

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

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

Discover more