# Introduction

Componere (latin, englais: 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 Componere\Definition::__construct(string `$name`)
public Componere\Definition::__construct(string `$name`, string `$parent`)
public Componere\Definition::__construct(string `$name`, array `$interfaces`)
public 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 Componere\Patch::__construct(object `$instance`)
public 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`.

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