silverleague/ideannotator

Generate PHP DocBlock annotations for DataObject and DataExtension databasefields and relation methods

Installs: 12 641

Dependents: 0

Suggesters: 0

Security: 0

Stars: 34

Watchers: 2

Forks: 15

Open Issues: 7

Type:silverstripe-vendormodule

3.0.0 2018-07-07 01:30 UTC

README

Scrutinizer Travis codecov Packagist Packagist Packagist Pre Release

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.