idea-php-annotation-plugin
Provides PHP annotation support for PhpStorm / IntelliJ and provides references support for "Code > Optimize Imports" action
Install
- Download plugin or install directly out of PhpStorm
- Force file reindex if necessary with:
File -> Invalidate Cache
Version
- 2.x: PhpStorm9
- 1.x: PhpStorm8
Annotation Class Detection
- Every class with
@Annotation
inside class doc block is detected on file indexing - Annotation Properties on property names
- Property value types
- @ENUM Tags
/**
* @Annotation
*/
class NotBlank extends Constraint {
public $message = 'This value should not be blank.';
public $groups = array();
/**
* @var Boolean
*/
public $option = false;
/**
*
* @Enum({"AUTO", "SEQUENCE", "TABLE", "IDENTITY", "NONE", "UUID", "CUSTOM"})
*/
public $strategy = 'AUTO';
/**
* @var array<string>
*/
public $cascade;
}
Annotation Target Detection
@Target
is used to attach annotation, if non provided its added to "ALL list"
/**
* @Annotation
* @Target("PROPERTY", "METHOD", "CLASS", "ALL")
*/
class NotBlank extends Constraint {
public $message = 'This value should not be blank.';
}
Extension Points
Plugins provides several extension points, which allows external plugins to provide additional. See some examples on Symfony2 Plugin
Example for extension points.
<extensionPoints>
<extensionPoint name="PhpAnnotationCompletionProvider" interface="de.espend.idea.php.annotation.extension.PhpAnnotationCompletionProvider"/>
<extensionPoint name="PhpAnnotationReferenceProvider" interface="de.espend.idea.php.annotation.extension.PhpAnnotationReferenceProvider"/>
<extensionPoint name="PhpAnnotationDocTagGotoHandler" interface="de.espend.idea.php.annotation.extension.PhpAnnotationDocTagGotoHandler"/>
<extensionPoint name="PhpAnnotationDocTagAnnotator" interface="de.espend.idea.php.annotation.extension.PhpAnnotationDocTagAnnotator"/>
</extensionPoints>
<extensions defaultExtensionNs="de.espend.idea.php.annotation">
<PhpAnnotationExtension implementation="de.espend.idea.php.annotation.completion.PhpAnnotationTypeCompletionProvider"/>
</extensions>
Completion confidence
Annoying pressing completion shortcut? Plugin provides a nice completion confidence to open completion popover on several conditions
/**
* @<carpet>
* <carpet>
*/
Static values
/**
* @DI\Observe(SomethingEvents::PRE_UPDATE)
*/
Doctrine
ORM: Property generator
class Foo {
public $id<carpet>;
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
public $id<carpet>;
}
ORM: class entity generator
/**
* @ORM\Entity(repositoryClass="Foo")
* @ORM\Table(name="bike")
*/
class Foo { }
ORM: repository class generator / indention
/**
* @ORM\Entity(repositoryClass="UnknownClass")
*/
class Foo { }
/**
* @ORM\Entity<carpet>
*/
class Foo { }
ORM: repository class completion
/**
* @ORM\Entity(repositoryClass="<carpet>")
*/
PhpStorm9
- will see :)