# Componere

# Introduction

Componere (latin, anglais : compose) cible les environnements de production et fournit une API pour la composition de classes, le patching et la conversion de type.

##### Composition:

Componere\Definition est utilisée pour définir (ou redéfinir) une classe à l'exécution; La classe peut ensuite être enregistrée, et dans le cas d'une redéfinition, elle remplace la classe d'origine tant que Componere\Definition existe.

public function Componere\Definition::__construct(string `$name`)
public function Componere\Definition::__construct(string `$name`, string `$parent`)
public function Componere\Definition::__construct(string `$name`, array `$interfaces`)
public function Componere\Definition::__construct(string `$name`, string `$parent`, array `$interfaces`)

##### Patching:

Componere\Patch est utilisée pour changer la classe d'une instance spécifique d'un objet à l'exécution; Le patch reste appliqué tant que Componere\Patch existe, et peut être révoqué explicitement.

public function Componere\Patch::__construct(object `$instance`)
public function Componere\Patch::__construct(object `$instance`, array `$interfaces`)

##### Conversion de type:

Les fonctions de conversion de type Componere\ peuvent effectuer des conversions parmi les types compatibles définis par l'utilisateur; Où compatible signifie que Type est sous ou sur le type de `object`.

function Componere\cast(string `$type`, object `$object`): object
function Componere\cast_by_ref(string `$type`, object `$object`): object

- Installation/Configuration
  - Pré-requis
  - Installation
- Componere\Abstract\Definition — La classe Componere\Abstract\Definition
  - Componere\Abstract\Definition::addInterface — Ajoute une interface
  - Componere\Abstract\Definition::addMethod — Ajoute une méthode
  - Componere\Abstract\Definition::addTrait — Ajoute un trait
  - Componere\Abstract\Definition::getReflector — Reflection
- Componere\Definition — La classe Componere\Definition
  - Componere\Definition::__construct — Constructeurs de Definition
  - Componere\Definition::addConstant — Ajoute une constante
  - Componere\Definition::addProperty — Ajoute une propriété
  - Componere\Definition::register — Inscription
  - Componere\Definition::isRegistered — Détection d'état
  - Componere\Definition::getClosure — Renvoie la fermeture
  - Componere\Definition::getClosures — Renvoie des fermetures
- Componere\Patch — La classe Componere\Patch
  - Componere\Patch::__construct — Construction de patch
  - Componere\Patch::apply — Applique
  - Componere\Patch::revert — Restaure
  - Componere\Patch::isApplied — Détection d'état
  - Componere\Patch::derive — Dérivation de patch
  - Componere\Patch::getClosure — Renvoie une fermeture
  - Componere\Patch::getClosures — Renvoie des fermetures
- Componere\Method — La classe Componere\Method
  - Componere\Method::__construct — Construction de méthode
  - Componere\Method::setPrivate — Modification de l'accessibilité
  - Componere\Method::setProtected — Modification de l'accessibilité
  - Componere\Method::setStatic — Modification de l'accessibilité
  - Componere\Method::getReflector — Reflection
- Componere\Value — La classe Componere\Value
  - Componere\Value::__construct — Construction de Value
  - Componere\Value::setPrivate — Modification d'accessibilité
  - Componere\Value::setProtected — Modification d'accessibilité
  - Componere\Value::setStatic — Modification d'accessibilité
  - Componere\Value::isPrivate — Détection d'accessibilité
  - Componere\Value::isProtected — Détection d'accessibilité
  - Componere\Value::isStatic — Détection d'accessibilité
  - Componere\Value::hasDefault — Interaction de valeur
- Fonctions de Componere
  - Componere\cast — Conversion de type
  - Componere\cast_by_ref — Conversion de type

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open