PHP 7.1 source code API generator.


Build Status Coverage Status Downloads Latest stable

ApiGen is the simplest, the easiest to use and the most modern api doc generator. It is all PHP 7.1 features ready easy to extend with own Finder, Annotation Subscriber or even Generator.

Just look at Nette API, CakePHP API or Doctrine API.

Your Help is Needed to Finish 5.x Release

❤️ We need your help to test new version of ApiGen.

How to install it?

Add to your composer.json:

    "require": {
        "apigen/apigen": "5.0.0-RC3",
        "roave/better-reflection": "@dev"

then update:

composer update

Test it, report issues, send PRs and see the ApiGen 5.x release plan.

💀Version 4.x is not supported, since there was huge change of Reflection library and the code was almost completely rewritten.

Built on Shoulders of Giants


composer require apigen/apigen --dev


Generate API docs by passing single source and destination options:

vendor/bin/apigen generate src --destination docs

Or generate API docs for multiple directories:

vendor/bin/apigen generate src tests --destination docs


Below is a minimal example configuration. Save it as a apigen.yml file in the root of your project:

    visibilityLevels: [public, protected] # array
    annotationGroups: [todo, deprecated] # array
    title: "ApiGen Docs" # string
    baseUrl: "http://apigen.org/api" # string
    overwrite: false # bool

What Annotations Have Extra Care?

@see, @covers, @uses

Reference to Class, Function, Property, Method etc. element.

In Code

 * @see SomeClass
 * @see SomeClass::$propety
 * @see SomeClass::someFunction()


@see <a href="class-SomeClass.html">SomeClass</a>
@see <a href="class-SomeClass.html#$someProperty">SomeClass::$property</a>
@see <a href="class-SomeClass.html#_someFunction">SomeClass::someFunction()</a>


A website url.

In Code

 * This is already mentioned on Wiki.
 * @link https://en.wikipedia.org/wiki/United_we_stand,_divided_we_fall Click to see a cool quote  


This is already mentioned on Wiki.
@link <a href="https://en.wikipedia.org/wiki/United_we_stand,_divided_we_fall">Click to see a cool quote</a> 


Associated element is internal, so ApiGen hides it.


To enable a custom theme just provide themeDirectory configuration option in your apigen.yml:

    themeDirectory: path/to/theme # path to theme's config file


Rules are simple:

  • new feature needs tests
  • all tests must pass
    composer complete-check
  • 1 feature per PR

We would be happy to merge your feature then.