# dannyspd/vscode-php-getters-setters architecture

> Architecture diagram of the GitHub repository dannyspd/vscode-php-getters-setters, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/dannyspd/vscode-php-getters-setters
- Repository: https://github.com/dannyspd/vscode-php-getters-setters

## Overview

This is a VS Code extension that generates PHP getters and setters from class properties. The main workflow starts with a user invoking an editor command, then analyzes the selected property and produces methods for insertion; configuration and custom templates affect generation, and the extension can redirect the editor afterward. The repository also contains constructor-generation and PHP/API-oriented utilities. Edges are limited to relationships shown in the excerpts, SOURCE INDEX references, or README; some utility modules have no evidenced runtime connection here.

Main entry points: [`src/extension.ts`](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/extension.ts) (Commands and orchestration), [`src/Extras/PHP/CreateConstructorFromProperties.ts`](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/PHP/CreateConstructorFromProperties.ts) (Constructor generation), [`src/Property.ts`](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Property.ts) (Property analysis), [`src/TemplatesManager.ts`](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/TemplatesManager.ts) (Template discovery)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_editor["Editor workflow"]
  node_extension["Commands and orchestration<br/>[extension.ts]"]
end

subgraph group_generation["Property generation"]
  node_property["Property analysis<br/>[Property.ts]"]
  node_names["Name conversion<br/>[Names.ts]"]
  node_renderer["Editor insertion<br/>[Renderer.ts]"]
  node_redirector["Editor redirection<br/>[Redirector.ts]"]
  node_client_templates["Getter and setter output<br/>[extension.ts]"]
end

subgraph group_templates["Templates and settings"]
  node_configuration["Extension settings<br/>[Configuration.ts]"]
  node_templates_manager["Template discovery"]
  node_user_templates["Custom templates"]
end

subgraph group_extras["PHP utilities"]
  node_constructor_generator["Constructor generation"]
  node_function_definition["Function inspection"]
  node_composer["Composer PSR-4 mapping<br/>[Composer.ts]"]
  node_path_utils["Path utilities<br/>[PathUtils.ts]"]
  node_namespace_resolver["Namespace resolution"]
  node_json_php["JSON to PHP<br/>[JsonToPhp.ts]"]
  node_text_transforms["PHP text transforms<br/>[TextTransforms.ts]"]
  node_router["Route parsing<br/>[Router.ts]"]
  node_document_model["Document text model<br/>[DocumentModel.ts]"]
  node_endpoint["Endpoint records<br/>[EndPoint.ts]"]
  node_axios_consumer["Axios consumer<br/>[AxiosConsumer.ts]"]
  node_curl_consumer["PHP cURL consumer<br/>[CurlPhpConsumer.ts]"]
  node_template_generator["Text template generation"]
end

node_user(("VS Code user"))

node_user -->|"invokes command"| node_extension
node_extension -->|"analyzes selection"| node_property
node_property -->|"converts names"| node_names
node_extension -->|"reads settings"| node_configuration
node_extension -->|"checks templates"| node_templates_manager
node_templates_manager -->|"reads template directory"| node_configuration
node_templates_manager -->|"locates files"| node_user_templates
node_extension -->|"generates methods"| node_client_templates
node_client_templates -->|"uses property data"| node_property
node_extension -.->|"inserts generated text"| node_renderer
node_renderer -->|"redirects editor"| node_redirector
node_extension -->|"configures redirection"| node_redirector
node_extension -->|"parses routes"| node_router
node_router -->|"splits document text"| node_document_model
node_router -->|"creates records"| node_endpoint
node_extension -.->|"offers constructor generation"| node_constructor_generator
node_constructor_generator -->|"collects properties"| node_property
node_constructor_generator -->|"finds insertion point"| node_function_definition
node_constructor_generator -->|"inserts constructor"| node_renderer
node_namespace_resolver -->|"resolves mappings"| node_composer
node_composer -->|"normalizes paths"| node_path_utils
node_json_php -->|"converts identifiers"| node_names
node_text_transforms -->|"uses name conversion"| node_names
node_axios_consumer -->|"uses endpoint data"| node_endpoint
node_curl_consumer -->|"uses endpoint data"| node_endpoint

click node_extension "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/extension.ts"
click node_property "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Property.ts"
click node_names "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Names.ts"
click node_renderer "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Renderer.ts"
click node_redirector "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Redirector.ts"
click node_configuration "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Configuration.ts"
click node_templates_manager "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/TemplatesManager.ts"
click node_constructor_generator "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/PHP/CreateConstructorFromProperties.ts"
click node_function_definition "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/FunctionDefinition.ts"
click node_composer "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Composer.ts"
click node_path_utils "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/PathUtils.ts"
click node_namespace_resolver "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/PHP/ResolveNamespace.ts"
click node_json_php "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/PHP/JsonToPhp.ts"
click node_text_transforms "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/PHP/TextTransforms.ts"
click node_router "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/PHP/Router.ts"
click node_document_model "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/DocumentModel.ts"
click node_endpoint "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/EndPoint.ts"
click node_axios_consumer "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/Consumers/AxiosConsumer.ts"
click node_curl_consumer "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/Consumers/CurlPhpConsumer.ts"
click node_template_generator "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/GenerateTemplateFromText/GenerateTemplate.ts"
click node_client_templates "https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/extension.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_extension,node_user toneBlue
class node_property,node_names,node_renderer,node_redirector,node_client_templates toneAmber
class node_configuration,node_templates_manager,node_user_templates toneMint
class node_constructor_generator,node_function_definition,node_composer,node_path_utils,node_namespace_resolver,node_json_php,node_text_transforms,node_router,node_document_model,node_endpoint,node_axios_consumer,node_curl_consumer,node_template_generator toneRose
```

## Components

### Editor workflow

- [Commands and orchestration](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/extension.ts): `src/extension.ts`

### Property generation

- [Property analysis](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Property.ts): `src/Property.ts`
- [Name conversion](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Names.ts): `src/Names.ts`
- [Editor insertion](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Renderer.ts): `src/Renderer.ts`
- [Editor redirection](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Redirector.ts): `src/Redirector.ts`
- [Getter and setter output](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/extension.ts): `src/extension.ts`

### Templates and settings

- [Extension settings](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Configuration.ts): `src/Configuration.ts`
- [Template discovery](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/TemplatesManager.ts): `src/TemplatesManager.ts`
- **Custom templates**

### PHP utilities

- [Constructor generation](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/PHP/CreateConstructorFromProperties.ts): `src/Extras/PHP/CreateConstructorFromProperties.ts`
- [Function inspection](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/FunctionDefinition.ts): `src/FunctionDefinition.ts`
- [Composer PSR-4 mapping](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Composer.ts): `src/Composer.ts`
- [Path utilities](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/PathUtils.ts): `src/PathUtils.ts`
- [Namespace resolution](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/PHP/ResolveNamespace.ts): `src/Extras/PHP/ResolveNamespace.ts`
- [JSON to PHP](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/PHP/JsonToPhp.ts): `src/Extras/PHP/JsonToPhp.ts`
- [PHP text transforms](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/PHP/TextTransforms.ts): `src/Extras/PHP/TextTransforms.ts`
- [Route parsing](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/PHP/Router.ts): `src/Extras/PHP/Router.ts`
- [Document text model](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/DocumentModel.ts): `src/Extras/DocumentModel.ts`
- [Endpoint records](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/EndPoint.ts): `src/Extras/EndPoint.ts`
- [Axios consumer](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/Consumers/AxiosConsumer.ts): `src/Extras/Consumers/AxiosConsumer.ts`
- [PHP cURL consumer](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/Consumers/CurlPhpConsumer.ts): `src/Extras/Consumers/CurlPhpConsumer.ts`
- [Text template generation](https://github.com/dannyspd/vscode-php-getters-setters/blob/master/src/Extras/GenerateTemplateFromText/GenerateTemplate.ts): `src/Extras/GenerateTemplateFromText/GenerateTemplate.ts`

### Other components

- **VS Code user**

## Connections

- VS Code user → Commands and orchestration: invokes command (evidence: `README.md`)
- Commands and orchestration → Property analysis: analyzes selection (evidence: `src/extension.ts`)
- Property analysis → Name conversion: converts names (evidence: `src/Property.ts`)
- Commands and orchestration → Extension settings: reads settings (evidence: `src/extension.ts`)
- Commands and orchestration → Template discovery: checks templates (evidence: `src/extension.ts`)
- Template discovery → Extension settings: reads template directory (evidence: `src/TemplatesManager.ts`)
- Template discovery → Custom templates: locates files (evidence: `src/TemplatesManager.ts`)
- Commands and orchestration → Getter and setter output: generates methods (evidence: `README.md`)
- Getter and setter output → Property analysis: uses property data (evidence: `README.md`)
- Commands and orchestration → Editor insertion: inserts generated text (evidence: `src/extension.ts`)
- Editor insertion → Editor redirection: redirects editor (evidence: `src/Renderer.ts`)
- Commands and orchestration → Editor redirection: configures redirection (evidence: `src/extension.ts`)
- Commands and orchestration → Route parsing: parses routes (evidence: `src/extension.ts`)
- Route parsing → Document text model: splits document text (evidence: `src/Extras/PHP/Router.ts`)
- Route parsing → Endpoint records: creates records (evidence: `src/Extras/PHP/Router.ts`)
- Commands and orchestration → Constructor generation: offers constructor generation (evidence: `src/extension.ts`)
- Constructor generation → Property analysis: collects properties (evidence: `src/Extras/PHP/CreateConstructorFromProperties.ts`)
- Constructor generation → Function inspection: finds insertion point (evidence: `src/Extras/PHP/CreateConstructorFromProperties.ts`)
- Constructor generation → Editor insertion: inserts constructor (evidence: `src/Extras/PHP/CreateConstructorFromProperties.ts`)
- Namespace resolution → Composer PSR-4 mapping: resolves mappings (evidence: `src/Extras/PHP/ResolveNamespace.ts`)
- Composer PSR-4 mapping → Path utilities: normalizes paths (evidence: `src/Composer.ts`)
- JSON to PHP → Name conversion: converts identifiers (evidence: `src/Extras/PHP/JsonToPhp.ts`)
- PHP text transforms → Name conversion: uses name conversion (evidence: `src/Extras/PHP/TextTransforms.ts`)
- Axios consumer → Endpoint records: uses endpoint data (evidence: `src/Extras/Consumers/AxiosConsumer.ts`)
- PHP cURL consumer → Endpoint records: uses endpoint data (evidence: `src/Extras/Consumers/CurlPhpConsumer.ts`)
