Framework for PHP website development
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.testproject
application
async
base
component
controller
dataprovider
docs
entity
fileupload
format
logging
model
pagination
responder
schedulable
storage
tools
translation
utility
validator
view
.gitignore
LICENSE
README.md
functions.php
include.php
project-storage.php

README.md

Build status

Framework for PHP website development by Kristijan Burnik

Base

  • Event triggering and listening mechanisms for objects inherting the Base class

Built-in templating language

  • express views with short and simple looping and branching

Project

  • define your project setup and make multiple projects with the same framework instance

Application

  • measure the runtime of the app via single call

Console

  • never use echo, print or print_r to see output again
  • avoid mixing results with debugging info
  • define the TESTMODE and omit PRODUCTION for outputing console text as HTTP headers

Scheduler

  • easily schedule tasks to run in background or via cron job

Component

  • Pagination - simple mechanism for paginating over model results
  • Session - user session handling
  • LoginModel - avoid writing common user login boilerplate
  • Security - CSRF checks and tokens

DataProvider

  • abstraction for SQL DBs - MySQL implemented
  • write queries via PHP - avoid using SQL specific queries when possible

TestCase

  • test your app with unit tests and integration tests

Routing and ViewProviders

  • route dynamically according to a RegEx or an exact URL sufix match
  • specify ViewProviders separate from the Controller to decouple the view filenames/instances

Model/View/Controller

  • BaseModel class has internal access to a queried data provider
  • EntityModel class has internal access to a more abstract class - the data driver
  • Controller can be bound to a view template easily and is decoupled from the view to allow for testing
  • Views can be written in the built-in template language

Entity & EntityModel + DataDriver

  • fully separated layers for the Model and the underlying data

Storage + Cache

  • store data in memory / session / filesystem / database with the same map-like interface

Async

  • run a BaseModel public function asynchronously (in a separate process)
  • little help from an .sh script :-)

FileUpload

  • simplified file uploading and file type restrictions

Formaters

  • multiple formats for outputing: XML, JSON, CSV, ... easily extendable

XHRResponder

  • for easily creating a RESTful API
  • EntityModelXHRResponder for common entity model methods (find, count, insert, update, delete)

Validation

  • helpful and common RegEx and validation methods

Logging

  • a project wide or directory wide error listener, works asynchronously to detect and notify errors

Utility

  • Shell colors
  • Image processor for resizing and other common image tasks
  • auxiliary useful functions in global namespace such as array_pick, produce, produceview, getext, etc.

MISC

  • MySQL and InMemory mock support for models