PHP framework depends on Flight

0.3.13 2017-02-23 06:25 UTC



Use composer to install

composer require wwtg99/flight2wwu

Or, add require in composer.json "wwtg99/flight2wwu": "*"

Use command tool wwtinit (vendor/bin) to initialize project

vendor/bin/wwtinit <project_dir>

Config Apache

Set web directory to web and set AllowOverride to All.

Config Nginx

Add in server

location / {
    try_files $uri $uri/ /index.php;

Config framework

Change conf files in App/config. At most time only change app_config.php.


  • App: application directory
    • config: config files
      • lang: translation files
    • Controller: controller class
    • Model: model class
    • view: view templates
    • Plugin: plugin class
  • bootstrap: bootstrap scripts
  • storage: storage directory, write access
    • log: default log directory
    • tmp: default tmp directory (ex. config cache file)
  • web: web document root



The super class for all controllers.


The super class for all Restful controllers. Subclass must implement 7 functions.

  • index: URI /resources Method Get, list all resources
  • show: URI /resources/{id} Method Get, get one resource by id
  • create: URI /resources/create Method Get, view to create resource, used for restful+
  • store: URI /resources Method Post, create resource
  • edit: URI /resources/{id}/edit Method Get, view to update resource, used for restful+
  • update: URI /resource/{id} Method Put/Patch, update resource, Put to update all data (null for data not provided), Patch to update provided data
  • destroy: URI /resource/{id} Method Delete, delete resource


The best super class for restful APIs. Implement all functions in RestfulController (disable create and edit), and provided 5 functions to handle resources:

  • listResources: list resources
  • getResource: get one resource
  • createResource: create resource
  • updateResource: update resource
  • deleteResource: delete resource

And 3 attributes:

  • filterFields: fields to filter
  • createFields: fields for creation
  • updateFields: fields for update


The best super class for restful view controllers. Implement all functions in RestfulController, all functions will return by view.

RestFul APIs Definition

Resource URI,represent one resource, example: http://example.com/resources/

If have errors, error message will be provided as {"error": "message", "code": 1} .

URIs and Methods(zoos as example):

Method URI Action
GET /zoos get resource list
POST /zoos create resource
GET /zoos/{id} get resource by id
PUT /zoos/{id} update resource by id (must provided all fields)
PATCH /zoos/{id} update resource by id (provided partial fields)
DELETE /zoos/{id} delete resource by id

Paging、Order and Filters

Get resource list support paging, order and filters.


Method one:

page: page number page_size: number per page, optional, default 100 Example: ?page=1&page_size=100

Method two:

limit: number limitation offset:number offset, optional, default 0 Example: ?limit=100&offset=10


Use sort parameter, >field to sort by field ascending, <field to sort by field descending, use comma (,) to separate fields, Example: ?sort=>name,<age


Use expression to filter, supported expression: =, >=, <=, !=。 Example:?name=Tom ?age>=10 ?name!=Tim

Selected fields

Get resource list and get one resource support select fields. Use fields parameters, comma (,) to separate. Example: ?fields=name,age,dob,pob If fields is count, then show number of data.

Return HTTP code

  • GET return 200
  • POST create resource successfully returning 201, create resource failed returning 200 and error message, server error returning 500.
  • PUT/PATCH update resource successfully returning 201, update resource failed returning 200 and error message, server error returning 500
  • DELETE delete resource successfully returning 204, delete resource failed returning 200 and error message, server error returning 500