Include correct README

This commit is contained in:
Timothy Warren 2012-06-13 13:51:15 -04:00
parent 13b63edc5f
commit 054ea4f908

115
README.md
View File

@ -1,103 +1,22 @@
# 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 bootstrap
* app - configuration and app-wide files
* classes - helper classes
* config - configuration files
* modules - MVC triads
* controllers - controller classes
* models - model classes
* views - module-specific views
* views - global page templates
* errors - error page templates
* assets - frontend files
* js - javascript files
* css - css files
* config - minifier configuration files
* sys - core framework classes
### Common Tasks
* Creating a controller
<?php
class Foo extends miniMVC\Controller {
function __construct()
{
parent::__construct();
}
}
* Creating a model
<?php
class Bar extends miniMVC\Model {
function __construct()
{
parent::__construct();
}
}
* Loading a database
`$this->db = miniMVC\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)` - creates an instance of that model as a member of the current class. After loading the model, you can call its methods like so
`$this->[model name]->method()`
* Loading a class
Librarys / classes found in `app/classes` or `sys/libraries` are autoloaded.
To call a library, simply instantiate that class.
Classes with a `get_instance` static methods should be called like so:
`$obj =& miniMVC\class::get_instance()`
#meta
Other classes should be called using the new operator
So, you know all that client information you need to keep track of, like passwords and servers? Or how about all those serial keys for the software you have? meta is a webapp to organize these kinds of data for easier reference.
`$obj = new miniMVC\class()`
##Organizing Data
Meta has a four-level hierarchy
1. Genre
* The broadest category. An example could be titled 'Client Data'
2. Category
* A general item in the genre. For example, an individual client.
3. Section
* A grouping of label-data pairs. Something like 'CMS Access'
4. Data
* Pairs of labels and values.
Eg. Username : admin
This basic hierarchy enables keeping track of simple data in a neat fashion.