The document summarizes the state of the Lithium framework. It discusses project and community stats including contributors and issues closed. It outlines progress on the roadmap including new features like encrypting and signing cookies, nesting routes, and error handling. Upcoming features mentioned are HTTP service classes, filtering and sorting collections, and schema and multibyte classes. Community plugins are highlighted and tips and tricks are provided before opening for Q&A.
3. AGENDA
• State of the framework
• New features
• Upcoming features
• Community plugins
• Library management & The Lab
• Tips & tricks
• Q&A / Demos!
5. PROJECT & COMMUNITY STATS
• ~130 plugin repositories on GitHub
• 350+ commits from 40+ contributors since 0.10
• 60+ commits to the manual since 0.10
• Closed 250+ issues since moving to GitHub
• 175 pull requests submitted since moving to GitHub
15. MULTIBYTE CLASS
• Supports mbstring, intl, iconv & (womp, womp) plain PHP
• Only one method right now: strlen()
• More would be good… open a pull request
16. SCHEMA CLASS
• Arbitrary data types
• Arbitrary handlers
• Example: hash modified passwords before writing
• Other example: JSON en/decode arbitrary data for MySQL
26. RETURN ON REDIRECT
class PostsController extends Base {
public function view($post) {
if (!$post) {
$this->redirect("Posts::index");
}
// Herp derp
}
}
29. DON’T FEAR THE SUBCLASS
class Base extends lithiumdataModel {
public function save($entity, $data = null, array $options = array()) {
if ($data) {
$entity->set($data);
}
if (!$entity->exists()) {
$entity->created = new MongoDate();
}
$entity->updated = new MongoDate();
return parent::save($entity, null, $options);
}
}
class Posts extends Base {
...
}
30. QUICK & DIRTY ADMIN
Dispatcher::config(array('rules' => array(
'admin' => array(
'action' => 'admin_{:action}'
)
)));
class PostsController extends Base {
Router::connect(
public function admin_index() {
'/admin/{:args}',
...
array('admin' => true),
}
array('continue' => true)
);
public function index() {
...
}
}