# miniMVC miniMVC is a minimalistic Modular MVC framework, with built-in minifier, and pure-PHP templating system. ### Requirements * PHP 5.4+ * PDO extensions for databases you wish to use * Webserver that correctly handles REQUEST_URI, such as: * Apache * IIS * Lighttpd * SimpleTest library for running unit tests ### Unique features #### Extensive use of PHP's magic methods on the base class * `__toString()` method allows a view of the current class object when the current class object is used as a string. If you prefer `var_dump()` or `var_export()`, you can pass the name of that function if you call the `__toString` method directly. Eg. `$this . "string"`, `$this->__toString()`, `echo $this`; * `__call()` method allows the dynamic addition of callable closure objects Eg. `$this->foo = function($baz){}` is callable as `$this->foo()`, with the current object as the last argument * `MM` class extends ArrayObject, and all the main classes extend this class. Functions begining with `array_` are callable on object from this class. E.g. `$this->array_keys()` will return a list of the class properties. #### Database class is an extension of PHP's PDO class. Database class uses [Query](https://github.com/aviat4ion/Query) as a database abstraction layer and query builder. Database connections are set in /app/config/db.php ### File Structure * index.php - framework frontend * app - configuration and app-wide files * config - configuration files * errors - error page templates * views - global page templates * assets - frontend files * js - javascript files * css - css files * config - minifier configuration files * modules - MVC triads * controllers - controller classes * models - model classes * views - module-specific views * sys - core framework classes ### Common Tasks * Creating a controller db = db::get_instance($db_name);` Note that multiple databases can be used in the same class by specifying a different database name. * Loading a model (From a controller) `$this->load_model($model)`