Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Full stack frameworks are too hard for beginners Micro frameworks don’t provide enough to work with Kohana being discontinued Too much boilerplate code Questionable design choices in some frameworks Mastering a framework requires a lot of experience

Slide 3

Slide 3 text

Easy to both learn and master High performance ( more on that later ) Fully unit tested Component based ( use only what you need ) Dependency injection No static class members Perfect for small to medium projects

Slide 4

Slide 4 text

Query builder ORM Validation Authorization and authentication PHP and HAML templating Cache Database Migrations Image manipulation …and more, out of the box Components can be used outside PHPixie

Slide 5

Slide 5 text

http://www.techempower.com/benchmarks/#section=data-r9&hw=ec2&test=json&l=sg

Slide 6

Slide 6 text

Flexible configuration component MongoDB support, with automatic query optimization Relationships between objects in separate databases… …but still using subqueries wherever possible 100% code coverage ( some components already covered ) Full PSR compliance Separate Domain layer Console API for CLI tasks Switch from service location to full constructor injection

Slide 7

Slide 7 text

Simplicity is prerequisite for reliability. - Edsger Dijkstra

Slide 8

Slide 8 text

Instance members Static members Object instantiation B class A class

Slide 9

Slide 9 text

Right tool for the wrong job

Slide 10

Slide 10 text

Good ones: User interfaces HTTP Requests Real-time updates A new USB device is found Currently in PHP world: ORM model is being saved A user has logged in Content filtering Indirect method call

Slide 11

Slide 11 text

Events come from outside the system ( user click, API request ) Application only processes events, but does not trigger them Unpredictable by nature Have clearly defined subscribers

Slide 12

Slide 12 text

Are triggered by the application Easily predictable Anything can subscribe to anything Subscription may occur in the most unexpected places

Slide 13

Slide 13 text

Non-linear execution flow Possibility of an infinite loop Hard to debug ( event hell ) Should be refactored by injecting dependencies … … but the process requires a lot of rewriting Once introduced quickly invade all parts of the system Observers are a common source of memory leaks

Slide 14

Slide 14 text

Some things don’t need simplification

Slide 15

Slide 15 text

Requires lookup of service identifiers Decouples DI from implementation Multiple formats may hurt consistency Doesn’t solve injection into non-service classes

Slide 16

Slide 16 text

Automatic… …at first Requires another dependency Reliance on string identifiers

Slide 17

Slide 17 text

Straightforward Transparent Easy to understand Easy to debug Easy to layer Verbose Why simplify this?

Slide 18

Slide 18 text

Heavy use of chaining, shift towards domain languages All components support multiple configuration profiles V3 components avoid container awareness Distinctly separated layers ( V3 ORM is a good example ) Tests follow class inheritance tree

Slide 19

Slide 19 text

http://phpixie.com http://github.com/dracony http://github.com/phpixie