# Introducción

Componere (latin, English: compose) se dirige a los entornos de producción y proporciona una API para composición de las clases, parches y moldeado.

##### Composición:

Componere\Definition se utiliza para definir (o redefinir) una clase en tiempo de ejecución; La clase puede entonces registrarse, y en caso de redefinición reemplaza a la clase original durante todo el tiempo que la clase Componere\Definition exista.

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`)

##### Parcheado:

Componere\Patch se utiliza para cambiar la clase de una instancia específica de un objeto en tiempo de ejecución; Tras su aplicación, el parche permanecerá aplicado durante todo el tiempo que la clase Componere\Patch exista, y puede ser revertido explícitamente.

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

##### Moldeado:

Componere\ Las funciones de moldeado pueden moldear entre tipos compatibles definidos por el usuario; Donde compatible significa Type es sub o super al tipo de `object`.

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