director-moav / talis-ms
There is no license information available for the latest version (v5.0.0) of this package.
TalisMS Is an API framework / middleware styled framework with multiple Door(r) types to invoke it
v5.0.0
2026-11-10 14:50 UTC
Requires
- php: >=8.5
Requires (Dev)
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-master
- v5.0.0
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.1
- v4.0.0
- v3.10.3
- v3.10.2
- v3.10.1
- v3.10.0
- v3.9.0
- v3.8.4
- v3.8.3
- v3.8.2
- v3.8.1
- v3.8.0
- v3.7.0
- v3.6.0
- v3.5.0
- v3.4.0
- v3.3.0
- v3.1.0
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.8.1
- v2.8.0
- v2.7.0
- v2.6.1
- v2.6.0
- v2.5.0
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.1
- v2.3.0
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.2
- v2.0.1
- v2.0.0
- v1.17.0
- v1.16.6
- v1.16.5
- v1.16.4
- v1.16.3
- v1.16.2
- v1.16.1
- v1.16.0
- v1.15.0
- v1.14.2
- v1.14.1
- v1.14.0
- v1.13.1
- v1.13.0
- v1.12.2
- v1.12.1
- v1.12.0
- v1.11.2
- v1.11.1
- v1.11.0
- v1.10.5
- v1.10.4
- v1.10.3
- v1.10.2
- v1.10.1
- v1.10.0
- v1.9.2
- v1.9.1
- v1.9.0
- v1.8.4
- v1.8.3
- v1.8.2
- v1.8.1
- v1.8.0
This package is auto-updated.
Last update: 2026-11-10 15:23:08 UTC
README
TalisMS is a small PHP framework for building APIs and middleware-style services. A request comes in through a door (Rest, HTTP, Cli, CliEmbedded or Daemon) and runs through a chain of links: filters first, then dependencies (validators), then your business-logic links. The last link renders the response. The same API classes work behind every door.
v5 needs PHP 8.5 or later.
composer require director-moav/talis-ms
- Upgrading from v4? Read the release notes. They have the rename tables, sed rules and behaviour changes.
- Want to see it run? The demo app serves one user CRUD resource through every door, with copy-paste commands.
Layout
src/Talis/ the library (what you get from Composer)
Chain/ chain links, filters, dependencies, errors, result links
Doors/ Rest, HTTP, Cli, CliEmbedded, Daemon, SpoolWorker
Message/ Request, Response, ResponseType, status codes, renderers
Router/ aRouter and DefaultRouter
Exception/ Talis exceptions
commons/ interfaces (iLogger, iEmitter, iRenderable, iFilter) and NullLogger
TalisMain.php starts a request: router, init hook, logger
Context.php shared process state (get/set/has)
tests/Unit/ one test class per src class
tests/Integration/ the demo app driven through every door
tests/Support/ spy logger and spy emitter for tests
tests/Fixtures/ small API classes and routers used by the tests
demo/ a small runnable app (see demo/README.md)
bin/check-coverage.php fails the build if line coverage of src/ is under 100%
DOCS/RELEASE-NOTES.md release notes and the v4 to v5 migration guide
How a request runs
- A door turns its input into URL parts and a JSON body, then calls
(new TalisMain)->begin($parts, $body, $uri)->nextLinkInChain()->render($emitter). DefaultRoutermaps/{a}/{b}/{c}toapi/{a}/{b}/{c}.phpunderTalisMain::$appPathand to the class\Api\{a}{b}{c}. Extra segments are read as key/value pairs and merged with$_GET.- The API class extends
Chain\aFilteredValidatedChainLinkand lists its$filters,$dependenciesandgetNextBl()links. A dependency that fails ends the chain with a 400-style response.bailOut()ends it with any renderable link.
Development
composer install
composer test # all tests
composer stan # phpstan, level max, over src, tests and demo
composer coverage # tests with coverage; fails under 100% of src/
See tests/README.md for the test suites.