Skip to content

tasuku43/php-mermaid-class-diagram

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mermaid class diagram generater

Overview

Generate Mermaid-js class diagram from php code.
This tool focuses on the relationships between classes and omits the details of class internals at this stage.

Installation

Via Composer

composer require --dev tasuku43/mermaid-class-diagram

Usage

Here is an example run on a sample project

$ tree
.
├── composer.json
├── composer.lock
├── src
│   ├── SomeAbstractClass.php
│   ├── SomeClassA.php
│   ├── SomeClassB.php
│   ├── SomeClassC.php
│   └── SomeInterface.php
└── vendor
class SomeClassA extends SomeAbstractClass
{
    private SomeClassB $someClassB;

    public function __construct(private SomeClassC $someClassC)
    {
    }
}

class SomeClassB
{
}

class SomeClassC
{
}

abstract class SomeAbstractClass implements SomeInterface
{
}

interface SomeInterface
{
}

Execute command by specifying a directory

$ vendor/bin/mermaid-class-diagram generate --path src
classDiagram
    class SomeClassC {
    }
    class SomeClassB {
    }
    class SomeAbstractClass {
        <<abstruct>>
    }
    class SomeClassA {
    }
    class SomeInterface {
        <<interface>>
    }

    SomeInterface <|.. SomeAbstractClass: realization
    SomeAbstractClass <|-- SomeClassA: inheritance
    SomeClassA *-- SomeClassB: composition
    SomeClassA *-- SomeClassC: composition
classDiagram
    class SomeClassC {
    }
    class SomeClassB {
    }
    class SomeAbstractClass {
        <<abstruct>>
    }
    class SomeClassA {
    }
    class SomeInterface {
        <<interface>>
    }

    SomeInterface <|.. SomeAbstractClass: realization
    SomeAbstractClass <|-- SomeClassA: inheritance
    SomeClassA *-- SomeClassB: composition
    SomeClassA *-- SomeClassC: composition

Execute command by specifying a file

$ vendor/bin/mermaid-class-diagram generate --path src/SomeClassA.php
classDiagram
    class SomeClassA {
    }

    SomeAbstractClass <|-- SomeClassA: inheritance
    SomeClassA *-- SomeClassB: composition
    SomeClassA *-- SomeClassC: composition
classDiagram
    class SomeClassA {
    }

    SomeAbstractClass <|-- SomeClassA: inheritance
    SomeClassA *-- SomeClassB: composition
    SomeClassA *-- SomeClassC: composition

License

The MIT License (MIT). Please see LICENSE for more information.