transitive / core
Core classes of Transitive MVP framework
2.5.4
2026-05-19 21:28 UTC
Requires
- php: >8.1
Requires (Dev)
- phpunit/phpunit: ^9.0.0
- vimeo/psalm: ^6.12
Suggests
- twig/twig: The flexible, fast and secure template engine for PHP
README
$$ {\displaystyle \forall a,b,c\in X:(aRb\wedge bRc)\Rightarrow aRc} $$
Core primitives for the Transitive MVP stack.
This package provides the base presenter and view contracts used by the other Transitive packages, plus a lightweight Transitive\Simple implementation that can run on its own when you do not need the web-specific layer.
What is included
Transitive\Core\Presenter: stores presenter data and supports flow breaks withredirect().Transitive\Core\View: the interface every Transitive view must implement.Transitive\Core\ViewResource: wraps a value and exposes helpers likeasArray(),asJSON(),asXML(),asYAML(),asString(), andasSerialized().Transitive\Core\BreakFlowException: used internally to interrupt route execution and redirect to another request.Transitive\Simple\View: a default in-memory view implementation for titles, typed content, and document serialization.Transitive\Simple\Front: a minimal front controller that executes routes and can export rendered output.
Installation
composer require transitive/core
PHP 8.1+ is required.
Basic usage
<?php use Transitive\Core\Presenter; use Transitive\Simple\View; $presenter = new Presenter(); $presenter->addData('name', 'Transitive'); $view = new View(); $view->setTitle('Home'); $view->addContent(function (array $data) { return 'Hello '.$data['name']; }); $data = $presenter->getData(); $view->setData($data); echo $view->getTitle('', '', PHP_EOL); echo $view->getContent()->asString();
View resources
ViewResource is the serialization boundary between views and consumers. A view can return structured content, and the caller can decide how to format it:
$resource = $view->getDocument(); echo $resource->asJSON(); echo $resource->asXML('document');