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() {
...
}
}