Skip to content

MVC micro framework for PHP inspired by Java Struts

License

Notifications You must be signed in to change notification settings

rosasurfer/ministruts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Scrutinizer Code Quality

MiniStruts

MVC micro framework for PHP

M - The basis of the model component is an ORM. The ORM is implemented as a "Data Mapper" and follows the "database first" approach. This approach is mainly designed for working with existing databases. The implementation requires neither code generation nor proxy classes (no surprises from code you didn't write). As long as tables have primary keys, any standard and non-standard database model can be connected and manually customized. Configuration uses pure PHP (no annotations or attributes). The ORM - especially the flexible configuration - was inspired by Hibernate.

V - The view component is realized by a layout engine which was inspired by the Tiles plugin for Java Struts. Pages can be composed using re-usable layouts and HTML fragments (a.k.a tiles). Both can be configured and extended as needed. The template language is pure PHP (no pre-compiling of HTML necessary).

C - The controller part covers application framework, configuration, service container, access control, caching, error handling and logging. The web stack of the framework was inspired by Java Struts 1. Version 1 had long been superseded by its successor and practically was no longer used. But in 2022 developers decided to revive it due to its simplicity and solidity, and to update it to current web standards. Long live Struts...


The project contains a special feature for command line interfaces that's worth mentioning: a syntax parser for the DocOpt standard which is well known in the Linux/Python world but little known in the PHP universe. The DocOpt standard uses the syntax description of the tool itself to define call options. At runtime syntax descriptions are parsed and matched/validated against the current call. The result are beautiful syntax definitions even for more complex tools (no more ugly Symfony error messages). Examples are here, you can try out the parser online here.


MiniStruts reference: struts-config.dtd

ORM mapping reference: README.md