Back to directory
silverleague avatar
silverleague / silverstripe-ideannotator

silverstripe-ideannotator

Generate docblocks for DataObjects, Page, PageControllers and (Data)Extensions

47

Stars

24

Forks

6

Watchers

BSD-3-Clause

License

silverstripe-ideannotator

Build Status Scrutinizer 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 and app are enabled "modules".

Version ^2:

SilverStripe 3.x framework

Version ^3:

Silverstripe 4.x, 5,x

Version ^4:

Silverstripe 6.x+

Installation

{
  "require-dev": {
    "silverleague/ideannotator": "^4"
  }
}

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.

Windows users should be aware that the PHP Docs are generated with PSR in mind and use \n for line endings rather than Window's \r\n, some editors may have a hard time with these line endings.

This module should never be installed on a production environment.

Releases

Apr 28, 2026

Download .zip

What's Changed

Backport: Fixed issue where the sort of mixins would differ in some cases by @UndefinedOffset in #188

Full Changelog: 3.6.1...3.7.0

What's Changed

BUG: Fixed issue where the sort of mixins would differ in some cases by @UndefinedOffset in #185

Full Changelog: 4.0.0...4.0.1

Sep 26, 2025

Download .zip

What's Changed

Silverstripe 6 Support by @UndefinedOffset in #183

Full Changelog: 3.6.1...4.0.0

Sep 26, 2025

Download .zip

What's Changed

DOC: Fixed doc issue for disabling the annotating on build by @UndefinedOffset in #179 FIX: check if description property exists before setting it. by @sunnysideup in #182 FIX: Fix cra...

Jul 24, 2025

Download .zip

What's Changed

Include dataobject base mixins by @lekoala in #165 Defaults to nullable string by @lekoala in #163 Add missing import by @lekoala in #167 support generics by @lekoala in #171 FEAT Keep...