Core classes of Transitive MVP framework

Maintainers

Package info

github.com/RobinDumontChaponet/TransitiveCore

pkg:composer/transitive/core

Statistics

Installs: 1 511

Dependents: 2

Suggesters: 0

Stars: 1

2.5.4 2026-05-19 21:28 UTC

This package is auto-updated.

Last update: 2026-06-19 21:46:29 UTC


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.

Latest Stable Version License

What is included

  • Transitive\Core\Presenter: stores presenter data and supports flow breaks with redirect().
  • Transitive\Core\View: the interface every Transitive view must implement.
  • Transitive\Core\ViewResource: wraps a value and exposes helpers like asArray(), asJSON(), asXML(), asYAML(), asString(), and asSerialized().
  • 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');

License

MIT