54. But, but...
•Can be ugly
•Tons of crappy code
•Inconsistencies
•Weird stuff inside
55. But, but...
•Can be ugly •Huge community
•Tons of crappy code
•Inconsistencies
•Weird stuff inside
56. But, but...
•Can be ugly •Huge community
•Tons of crappy code •Easy to get help
•Inconsistencies
•Weird stuff inside
57. But, but...
•Can be ugly •Huge community
•Tons of crappy code •Easy to get help
•Inconsistencies •Low entry barrier
•Weird stuff inside
58. But, but...
•Can be ugly •Huge community
•Tons of crappy code •Easy to get help
•Inconsistencies •Low entry barrier
•Weird stuff inside •Is everywhere
60. The team needs discipline
compromise readablity
http://www.flickr.com/photos/39865537@N03/4395203300
http://www.flickr.com/photos/73935252@N00/181308667
61. Pick your battles
http://www.flickr.com/photos/43322231@N07/5589147122
86. events: { ‘click .mybutton’: ‘doStuffAndSave’}
View doStuffAndSave: function() {
var book = Books.get(3);
book.stuff();
Books.get(3).save();
}
Model Model
87. events: { ‘click .mybutton’: ‘doStuffAndSave’}
View doStuffAndSave: function() {
var book = Books.get(3);
book.stuff();
Books.get(3).save();
}
Model Model
88. events: { ‘click .mybutton’: ‘doStuffAndSave’}
View doStuffAndSave: function() {
var book = Books.get(3);
book.stuff();
Books.get(3).save();
}
Model Model
PUT /books/3
89. Build an API
http://www.flickr.com/photos/kaptainkobold/3203311346/
90. FOSRestBundle
/**
* @View()
* GET /users
*/
public function getUsersAction()
{
return $this->getDoctrine()->getRepository('myBundle:User')->findAll();
}