Some infomation about PhpStorm and IntelliJ development on the plugins: Symfony2 Plugin, Annotation, Shopware, Laravel and Drupal. Also some extension points analysis of IntelliJ and PhpStorm
-------------
SymfonyLive Berlin 2014
4. PhpStorm / IntelliJ
● PhpStorm based on IntelliJ IDEA (Java)
– With plugins: PHP, Twig, Yaml, …
● „PhpStorm 1.0 & WebStorm 1.0 are public, it is official!“
– May 27, 2010
● PhpStorm 5: Symfony2 Framework Integration :(
– September 12, 2012
– Closed source, so no public API
● PhpStorm6: PHP OpenApi
– March 12, 2013
5. PhpStorm / IntelliJ
● PhpTypeProvider2 (ContainerInterface::get)
– PhpTypeProvider(1) freeze not usable
– Magento Plugin, Adrien Brault and PhpStorm Core Developer
– Help on debug
– What do we need and how do we use it?
– More user feedback from real life projects; only on Symfony2 Plugin
– Time issue for release date
● Twig as separate plugin (before: inside PHP)
● PhpStorm 7.0
– Improved PhpDoc support (Annotations)
● PhpStorm 7.1:
– Dev in sync with IntelliJ IDEA
6. PhpStorm / IntelliJ
● IntelliJ / PhpStorm doc and code examples
– Decompile and try on your own :)
● API, stopHere :)
● Single person project(s)
● My project(s) time window: ~4 hours per week
● Better JetBrains support, because of your downloads
– Faster API updates
– Pls update to PhpStrom8; only 35%
8. PhpStorm / IntelliJ IDEA
● No PHP interpreter all magic in Java
● Closed Source for Plugins (PHP, Twig, Yaml, ...)
● Open-Source IntelliJ Community Edition
● Display document structure (Lexer output) with Plugin:
PsiViewer
● Code wrapped into PsiElements, which are targets for all
extensions
● Just references [MethodReference → resolve() → Method()]
PsiViewer: https://plugins.jetbrains.com/plugin/227
27. Shopware
… Doctrine ORM QueryBuilder support :)
ShopwareModelsArticleRepository::getArticleQueryBuilder
28. Android Studio Prettify
Google Android team is switching to IntelliJ IDEA (Android Studio)
Google I/O 2013 - What's New in Android Developer Tools
Google I/O 2014 - What's new in Android development tools
35. Extension:
completion.contributor
On demand: ctrl+space or in our custom auto popup (completion.confidence)
Lookup string Type text
Tip: Press „Tab“ for element selection; matches underlying string
Twig
hack :)
Tail text
37. Extension
psi.referenceContributor
● Can provide completion (deprecated) and navigation
● Live event: On file change, inspection, reference search ...
● „Php Annotation“: references between „use“ and „Annotation“
● >30ms
38. Extension - fileBasedIndex
● Primary extension of IntelliJ IDEA (“Invalidate Caches / Restart”)
● Application storage (not per Project!) for strings
● Storage structure: File -> Key -> Values[]
● File change listener
● Background job, switching to „block mode“ on mass changes (project initialize)
● Only lexer output
<- Class index
40. Extension
PhpTypeProvider2
● Adds types (Classes, Interface) to methods, variables, … (the yellow ones)
● Signature modification: Append string parameter for higher application level
41. Extension
PhpTypeProvider2
Signature
#Ő#M#P#CespendDoctrineModelBundleControllerDefaultController.container.getƀtwig
X - core
X - our changes: special utf-8 char to split and get „twig“ parameter
72. Dev Environment / Tools
Decompile PHP plugin and add sourcepath, to get source code support for
externals
73. Dev Environment / Tools
● idea-php-symfony2-plugin-test
● github: idea-*
● Wissenwertes über die IntelliJ IDEA / PhpStorm Plugin Entwicklung
● JetBrains: JetBrains: Custom Language Support
● Doc: symfony2-plugin.espend.de
● JetBrains: Symfony Development using PhpStorm
● JetBrains: Drupal Development using PhpStorm