PHPackages                             icanboogie/icanboogie - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. icanboogie/icanboogie

ActiveLibrary[Framework](/categories/framework)

icanboogie/icanboogie
=====================

High-performance micro-framework for PHP

5.0(5y ago)295.3k↓84.6%3[4 issues](https://github.com/ICanBoogie/ICanBoogie/issues)20BSD-3-ClausePHPPHP &gt;=7.2.5CI failing

Since Mar 21Pushed 1y ago1 watchersCompare

[ Source](https://github.com/ICanBoogie/ICanBoogie)[ Packagist](https://packagist.org/packages/icanboogie/icanboogie)[ Docs](https://icanboogie.org/)[ RSS](/packages/icanboogie-icanboogie/feed)WikiDiscussions 6.0 Synced 3w ago

READMEChangelog (9)Dependencies (10)Versions (14)Used By (20)

[![ICanBoogie](https://camo.githubusercontent.com/ea36b781dc71b4c2360481c267b6ccf9ab3e6da9c0b7d0ff8f67f5f9f09ec23f/68747470733a2f2f63646e2e7261776769742e636f6d2f4943616e426f6f6769652f6170702d68656c6c6f2f6d61737465722f7765622f6173736574732f6963616e626f6f6769652e737667)](https://camo.githubusercontent.com/ea36b781dc71b4c2360481c267b6ccf9ab3e6da9c0b7d0ff8f67f5f9f09ec23f/68747470733a2f2f63646e2e7261776769742e636f6d2f4943616e426f6f6769652f6170702d68656c6c6f2f6d61737465722f7765622f6173736574732f6963616e626f6f6769652e737667)

[![Release](https://camo.githubusercontent.com/0a6212d1793d951a6ee08c78955307e666502461b6f99b7064de0e312bfa2fe3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f4943616e426f6f6769652f4943616e426f6f6769652e737667)](https://packagist.org/packages/icanboogie/icanboogie)[![Packagist](https://camo.githubusercontent.com/bdadb036a399df37b206e788b456aa3caa75f1704f1fa561c090e9164cc5f529/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6963616e626f6f6769652f6963616e626f6f6769652e737667)](https://packagist.org/packages/icanboogie/icanboogie)

**ICanBoogie** is a high-performance micro-framework. It is written with speed, flexibility, and lightness in mind. **ICanBoogie** doesn't try to be an all-in-one do-it-all solution but provides the essential features to quickly and easily build web applications. It is easily extensible, and a variety of packages are available to complement its features with [rendering](https://github.com/icanboogie/render), [views](https://github.com/icanboogie/view), [routing](https://github.com/icanboogie/routing), [operations](https://github.com/icanboogie/operation), [internationalization](https://github.com/icanboogie/cldr), [translation](https://github.com/icanboogie/i18n), [ActiveRecord](https://github.com/icanboogie/activerecord), [facets](https://github.com/icanboogie/facets), [mailer](https://github.com/icanboogie/mailer)…

### What does *micro* mean?

[](#what-does-micro-mean)

*"Micro"* means that the core features of ICanBoogie are kept to the essential; the core is simple but greatly extensible. For instance, ICanBoogie won't force an ORM on you, although its [ActiveRecord](https://github.com/ICanBoogie/ActiveRecord) implementation is pretty nice. In the same fashion, its routing mechanisms are quite agnostic and let you use your very own dispatcher if you want to.

### Configuration and conventions

[](#configuration-and-conventions)

ICanBoogie and its components are usually very configurable and come with sensible defaults and a few conventions. Configurations are usually located in "config" folders, while locale messages are usually located in "locale" folders. Components configure themselves thanks to ICanBoogie's [Autoconfig](https://icanboogie.org/docs/4.0/autoconfig) feature, and often don't require more that a line in your `composer.json` file.

### Acknowledgement

[](#acknowledgement)

[MooTools](http://mootools.net/), [Ruby on Rails](http://rubyonrails.org), and, of course, [Bacara](http://www.youtube.com/watch?v=KGuFn0RPgaE).

Summary
-------

[](#summary)

- [Working with ICanBoogie](https://icanboogie.org/docs/4.0/icanboogie#working-with-icanboogie)
    - [Getters and setters](https://icanboogie.org/docs/4.0/icanboogie#getters-and-setters)
    - [Dependency injection, inversion of control](https://icanboogie.org/docs/4.0/icanboogie#dependency-injection-inversion-of-control)
    - [Objects as strings](https://icanboogie.org/docs/4.0/icanboogie#objects-as-strings)
    - [Invokable objects](https://icanboogie.org/docs/4.0/icanboogie#invokable-objects)
    - [Collections as arrays](https://icanboogie.org/docs/4.0/icanboogie#collections-as-arrays)
    - [Creating an instance from data](https://icanboogie.org/docs/4.0/icanboogie#creating-an-instance-from-data)
- [The life and death of your application](https://icanboogie.org/docs/4.0/life-and-death)
- [Multi-site support](https://icanboogie.org/docs/4.0/multi-site)
    - [Instance name](https://icanboogie.org/docs/4.0/multi-site#instance-name)
    - [Resolving applications paths](https://icanboogie.org/docs/4.0/multi-site#resolving-applications-paths)
- [Autoconfig](https://icanboogie.org/docs/4.0/autoconfig)
    - [Participating in the *autoconfig* process](https://icanboogie.org/docs/4.0/autoconfig#participating-in-the-autoconfig-process)
    - [Generating the *autoconfig* file](https://icanboogie.org/docs/4.0/autoconfig#generating-the-autoconfig-file)
    - [Obtaining the *autoconfig*](https://icanboogie.org/docs/4.0/autoconfig#obtaining-the-autoconfig)
    - [Altering the *autoconfig* at runtime](https://icanboogie.org/docs/4.0/autoconfig#altering-the-autoconfig-at-runtime)
- [Configuring the application](https://icanboogie.org/docs/4.0/configuration)
- [Events](https://icanboogie.org/docs/4.0/life-and-death#events)
- [Bindings](https://icanboogie.org/docs/4.0/bindings)
    - [Prototyped bindings](https://icanboogie.org/docs/4.0/bindings#prototyped-bindings)

Routes
------

[](#routes)

The package provides a controller for the `/api/ping` route, which may be used to renew a session, if one existed in the first place. When the `timer` query parameter is present, the controller gives timing information as well.

```
