cakefest 2013 keynote
DESCRIPTION
This keynote presented in CakeFest 2013 contains a small summary of the things we have been working on for CakePHP 3.0TRANSCRIPT
![Page 1: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/1.jpg)
WHAT KEPT US BUSYA QUICK SUMMARY OF A YEAR WORKING IN CAKEPHP
CakeFest 2013 @jose_zap
![Page 2: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/2.jpg)
CAKEPHP IS COMMUNITY DRIVENThis is both good and bad. There is a slower pace in what wedo, but the result is a consequence of what the community is
actually asking for based of the collective input.
![Page 3: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/3.jpg)
WE GROW OLDER, BUT WISERIn general, people working in any organization...
![Page 4: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/4.jpg)
JOIN
![Page 5: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/5.jpg)
GET PASSIONATE ABOUT IT
![Page 6: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/6.jpg)
GET EXPERIENCE
![Page 7: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/7.jpg)
GET BORED
![Page 8: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/8.jpg)
GET MARRIED, HAVE CHILDREN
![Page 9: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/9.jpg)
BECOME BUSIER
![Page 10: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/10.jpg)
AND SOME... LEAVE(sad panda face)
![Page 11: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/11.jpg)
THE CORE TEAMHAVE A CONSTANT DREAM AND A PASSION TO MAKE THINGS BETTER
![Page 12: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/12.jpg)
THIS IS A SUMMARY OF THE THINGS WEDREAMT ABOUT
and made its way into the code
![Page 13: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/13.jpg)
HELLO PHP 5.4
![Page 14: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/14.jpg)
NAMESPACESWe hate \ (wrong slash) but we finally converted the virtual
packages into namespacesif (strpos($class, '\\') !== false)
Yes, we'll keep using the plugin syntax and save from writingthings like that
![Page 15: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/15.jpg)
NEW UNIFIED CONFIGConfiguration is passed directly to the classes that are
interested about them
Bye, Bye DATABASE_CONFIG
![Page 16: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/16.jpg)
COMPOSER SUPPORT OUT OF THE BOX
![Page 17: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/17.jpg)
FASTER, BETTER ROUTERReverse routing got extremely fast and now it is possible to
have named routes!
![Page 18: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/18.jpg)
ROUTING PREFIXES USING NAMESPACESInstead of UsersController::admin_index() you will have a
separate Admin\UsersController::index()
![Page 19: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/19.jpg)
FASTER, CONSISTENT AND LEANER EVENTMANAGER
![Page 20: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/20.jpg)
FEATURE RICH HTTPSOCKET CLASS
![Page 21: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/21.jpg)
NEW QUERY BUILDERCreate queries using a fluent interface with automatic type
conversion
$union = (new Query($connection)) ->select(['id', 'title']) ->from(['a' => 'articles']);
$results = (new Query($connection)) ->select(['id', 'comment']) ->from(['c' => 'comments']) ->where(['created >=', new DateTime('1 day ago')]) ->union($union) ->execute();
![Page 22: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/22.jpg)
SMART SQL DIALECT TRANSLATIONYou can use this in both PostgreSQL and MySQL
$query = (new Query($connection))->select(function($q) { return [ 'id', 'full_name' => $q->concat(['first_name', ' ', 'last_name']) ]});
![Page 23: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/23.jpg)
SMART ASSOCIATION EAGER LOADINGThis will use a single query
$table = Table::build('author');$table->hasMany('article', [ 'property' => 'articles', 'strategy' => 'subquery', 'sort' => ['article.id' => 'asc']]);$results = $table->find('all')->contain('article')->toArray();
![Page 24: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/24.jpg)
CHAINABLE CUSTOM FINDERSWoot!?
$articles->latest()->popular()->list()->toArray();
![Page 25: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/25.jpg)
RESULT STREAMING
![Page 26: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/26.jpg)
STOPPABLE FINDSBefore find callbacks can stop the query from being executed
and return cached results
![Page 27: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/27.jpg)
MAP-REDUCE
![Page 28: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/28.jpg)
SCHEMA MIGRATIONS
![Page 29: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/29.jpg)
AND MUCH, MUCH MORE
![Page 30: CakeFest 2013 keynote](https://reader033.vdocuments.us/reader033/viewer/2022051616/5558245ed8b42a25588b4cff/html5/thumbnails/30.jpg)
WELCOME TO CAKEFESTThis is the right place to figure out where we are heading