Code Monkey home page Code Monkey logo

framework's Introduction

 ______  ______   ______   __    __   ______   __    __   ______   ______   __  __
/\  ___\/\  __ \ /\  __ \ /\ '-./  \ /\  ___\ /\ \ __\ \ /\  __ \ /\  __ \ /\ \/ /_
\ \  __\\ \  __< \ \  __ \\ \ \._/\ \\ \  __\ \ \ \| \\ \\ \ \/\ \\ \  __< \ \  _  \
 \ \_\/  \ \_\ \_\\ \_\ \_\\ \_\/\ \_\\ \_____\\ \__/_.__\\ \_____\\ \_\ \_\\ \_\ \_\
  \/_/    \/_/\/_/ \/_/\/_/ \/_/  \/_/ \/_____/ \/_/  \/_/ \/_____/ \/_/\/_/ \/_/\/_/

Titon Framework

Project Titon Build Status HHVM Latest Version Total Downloads License

What is Titon?

Titon is a modular web framework built on Hack that runs in HHVM. It is written with simplicity and efficiency in mind, with enough room for extensibility and abstraction. The framework takes advantage of Hack's strict mode, type system, generics, collections, and more. It also integrates the wonderful PSRs from PHP-FIG for increased interoperability with external PHP code bases and libraries.

Looking for more information? Find us in #titon on FreeNode.

Requirements

Roadmap

Upcoming features and release plan.

  • Q4 2015
    • Console package - Command line application [DELAYED]
    • HTTP package - Updated for PSR-7 support
    • MVC package - Model-view-controller application [DELAYED UNTIL PSR-7]
    • Pipeline package - Piped command streams
  • Q1 2016
    • CommandBus package - Command bus layer
    • Queue package - Queue, job, and worker services
    • Session package - Custom session handler
  • Q2 2016
    • DB package - Database abstraction layer
    • Model package - Object relational mapper and active record for DB entities
  • Q3 2016
    • Mail package - Emailing layer
    • ACL package - Access control lists
    • Auth package - Authentication and authorization
  • Q4 2016
    • ADR package - Action-domain-responder application
    • WebSocket package - Web socket based application

Features and additions currently in discussion.

  • Separate Type\Xml into its own package
  • Rewrite the Type package into a data structure oriented package
  • Implement a custom Yaml package that doesn't rely own Zend compat mode
  • Possibly merge Utility and Common packages

Usage

Documentation is currently in the works, but in the mean time, check out the following articles.

Contributing

Titon is accepting any knowledgeable PHP developers looking to get their hands and feet wet in Hack. Chat with us over in #titon for more information.

Testing

Titon comes packaged with a Vagrant box and a handful of Python scripts to ease the testing process. Boot up the Vagrant instance with vagrant up and SSH into the box with vagrant ssh. Once in Vagrant, you can run the following command to run tests.

/vagrant/bin/run-tests

Or run tests for a single file or folder.

/vagrant/bin/run-tests --path=Titon/Common

Or filter tests based on class or method name.

/vagrant/bin/run-tests --filter=methodName

Hack Strict Mode

For the most part, Titon strives to be strict compliant. This can be very challenging, but with Hack's built-in type checker, it couldn't be easier. Simply run the following command to check for strict issues.

/vagrant/bin/type-check

Or type check a specific folder.

/vagrant/bin/type-check --path=Titon/Utility

When filtering down by path, multiple errors will still arise like "Was expecting a class", "Unbound name", "Unbound global constant", "This is not a container, this is an object of type X", etc. The main cause of this issue is that the type checker is ran in a sub-folder, and not the root, so all those classes are not in scope. This should not be an issue if the type checker is ran in the source root.

framework's People

Contributors

milesj avatar alex-phillips avatar grahamcampbell avatar backendcoder avatar

Watchers

James Cloos avatar ShawnWQ avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.