axyr / silverstripe-ideannotator
Generate PHP DocBlock annotations for DataObject and DataExtension databasefields and relation methods
Installs: 17 987
Dependents: 0
Suggesters: 0
Security: 0
Stars: 40
Watchers: 5
Forks: 21
Type:silverstripe-vendormodule
Requires
- php: >=5.6.0
- phpdocumentor/reflection-docblock: ^2.0@dev
- silverstripe/framework: ^4
Requires (Dev)
README
This module generates @property, @method and @mixin tags for DataObjects, PageControllers and (Data)Extensions, so ide's like PHPStorm recognize the database and relations that are set in the $db, $has_one, $has_many and $many_many arrays.
The docblocks can be generated/updated with each dev/build and with a DataObjectAnnotatorTask per module or classname.
Requirements
SilverStripe Framework and possible custom code.
By default, mysite
is an enabled "module".
Version ^2:
SilverStripe 3.x framework
Version ^3:
SilverStripe 4.x
Installation
{ "require-dev": { "silverleague/ideannotator": "3.x-dev" } }
Please note, this example omitted any possible modules you require yourself!
Example result
<?php /** * Class NewsItem * * @property string $Title * @property int $Sort * @property int $Version * @property int $AuthorID * @method \SilverStripe\Security\Member Author() * @method \SilverStripe\ORM\DataList|Category[] Categories() * @method \SilverStripe\ORM\ManyManyList|Tag[] Tags() * @mixin Versioned */ class NewsItem extends \SilverStripe\ORM\DataObject { private static $db = array( 'Title' => 'Varchar(255)', 'Sort' => 'Int' ); private static $has_one = array( 'Author' => Member::class ); private static $has_many = array( 'Categories' => Category::class ); private static $many_many = array( 'Tags' => Tag::class ); }
Further information
For installation, see installation
For the Code of Conduct, see CodeOfConduct
For contributing, see Contributing
For further documentation information, see the docs
A word of caution
This module changes the content of your files and currently there is no backup functionality. PHPStorm has a Local history for files and of course you have your code version controlled... I tried to add complete UnitTests, but I can't garantuee every situation is covered.
This module should never be installed on a production environment.