Saltar al contenido

Microcore y paquetes ​

El core de SimpleRest es el árbol completo de src/framework/, con el namespace Boctulus\Simplerest\Core\. Que sea un microcore significa que no requiere nada más que PHP, con una única excepción: doctrine/inflector. No es un núcleo recortado a unas pocas clases ni un namespace aparte.

Cuando una librería es demasiado específica o necesita una dependencia externa, se convierte en un paquete de packages/boctulus/ que declara esa dependencia en su propio composer.json. El core sigue completo.

Qué garantiza el core ​

  • El composer.json de boctulus/simplerest requiere únicamente php y doctrine/inflector.
  • Cada clase de src/framework/ carga sin vendor/ y sin ningún paquete instalado.
  • El core no contiene aliases (class_alias) ni shims de compatibilidad.

La suite unit-tests/microcore comprueba estas tres condiciones. Un consumidor que instala solo boctulus/simplerest obtiene Request, Response, el router, Model, DB, ApiController, Acl y el resto del framework.

Paquetes extraídos del core ​

Estos paquetes conservan los nombres de clase originales. Para usar sus clases hay que instalar el paquete; con solo el core, esas clases no existen.

PaqueteQué contieneDependenciaQué queda en el core
boctulus/simplerest-psr7Adaptadores PSR-7 de Request y Response, y los helpers psr7_*()psr/http-messageRequest y Response
boctulus/simplerest-mailTodo el correo en Boctulus\Simplerest\Mail\: Mail (SMTP con PHPMailer), MailBase, MailAuditor, MailFromRemoteWP, EmailTemplate e IMailphpmailer/phpmailerNada de correo
boctulus/simplerest-jwt-authApi\AuthController (login, refresh, registro y tokens)firebase/php-jwt, la librería JWT para PHPIAuth y Factory::auth()
boctulus/simplerest-cssCSS: descarga y extracción de hojas de estilo, formateo y reglas CSSsabberworm/php-css-parserHTML y XML
boctulus/simplerest-htmlHtmlMinifier: minificación de HTML y eliminación de CSS y clases de un HTMLNinguna externaHTML y Strings

Ningún paquete extraído depende de otro; simplerest-api-clients sí requiere simplerest-mail, porque su cliente SendinBlue es un mailer. simplerest-html no necesita simplerest-css: quitar <style> o atributos class de un HTML es reescribir HTML, no parsear CSS.

Otros paquetes, como simplerest-scaffolding, simplerest-bootstrap-html, simplerest-web-inspection o simplerest-api-clients, siguen el mismo criterio y están en el catálogo de límites de paquetes Composer.

Relaciones pivot y doctrine/inflector ​

El alias de una relación pivot es el plural de la tabla relacionada (status → statuses, person → people) y lo calcula doctrine/inflector, la única dependencia del core además de PHP. Se usa solo en los subrecursos, que forman parte de Model y ApiController, por eso no puede ir a un paquete. Una prueba fija los plurales de todas las tablas conocidas, así que una actualización de la librería no puede cambiar en silencio la clave del JSON de subrecursos.

Límites conocidos ​

  • Factory::auth() crea MyAuthController, una clase de la aplicación, por lo que el core sigue acoplado a ese controlador.
  • Esta página no acredita una instalación desde Packagist: el core 3.0.0 no está publicado.