SlideShare a Scribd company logo
1 of 40
Download to read offline
CakePHP 3.0
     Embracing the future
About me
@jose_zap
I love scuba diving
And enjoy all
sorts of extreme




                   Like rock climbing
or rafting
and Sky diving
7 years ago...

PHP 4.3 was king

PHP 5.1 was about to be released

There was no PDO, no json extension by default, no unicode
and no SPL

Object orientation was very immature and buggy in PHP

No actual frameworks on the market, there was xoops and
mojavi (?)
7 years ago...




CakePHP is released to the public to fix ALL THE THINGS
A pioneer in PHP land


MVC

Convention over configuration

Object oriented

Active record like database abstraction

Secure by default
Always innovating...

Unit testing                                         20
                                                       08
PHP implementation of multibyte extension

Command line php shells

Plugins!

Reverse routing

Behaviors, Form helper, pagination, caching, i18n and much
more
We made it flexible

                                          20
                                            10
Pluggable logging system

Caching, session and javascript engines

Localized validation

Routing with custom classes

Configurable paths
Even more flexible and reliable!

                                            20
PHP 5.2                                       11

Customizable error handlers

Pluggable Auth component and email system

PHPUnit

PDO

Request and Response objects
Even more feature rich yet faster

                                  20
View blocks                         12

Content-type aware view classes

Easier HTTP caching

Configuration engines

Middleware (Dispatcher filters)

Generic events system
Coming soon..

                                                      20
                                                        12

CakePHP 2.3

PHP 5.4 local server

Better encryption strategies for authentication

Tons of small fixes that will just make you happier
An increasing debt...


Model layer is basically the same since PHP 4

No namespace support

Inflexible in some parts due to original PHP object restrictions

It could be faster

Sometimes encourages bad coding practices
Time to go back to the future
Who needs PHP 5.3?




  Let’s go with 5.4 all the way!
PHP 5.4, what we’re after


Traits, they seem like a good way of implementing behaviors

Closure binding, an alternative way of injecting finders or more
behaviors

JsonSerializable interface, easier web services

It’s faster!
Adopt namespaces
We hate the wrong slash ()


We will keep as much as possible our current way of addressing
to class names (using conventions and dot notation)

Already prepared for this moment in 2.0, we are just replacing
App::uses() with native “use” statements

Classes will keep their suffixes, for instances PostsController
will still be named the same instead of just “Posts”
Configuration Changes
More freedom and clarity for you



Unified configuration: No more Cache::config(), everything is
setup in the Configure class now

Remove obscurity and still use conventions. Each step of the
bootstrapping process will be handled in a separate file
Example bootstrap.php file
Example cache.php file
Improved and faster routing
Time to cut the fat


Named params are going to be removed (no more /var:value/)

Ability to set ssl, scheme, host and port in router calls

Named routes for faster lookups

Prefix routing to map subclasses

Constant reverse routing time
Prefixed actions



No more mixing admin and non admin actions in the same class

Prefixed routing will map to classes inside a namespace

Instead of UsersController::admin_index() you will have
AppControllerAdminUsersController::index()
Routing example
New database layer
Current problems...

Frankenstein models. Is it a record or a table?

Inconsistent API. Model::read() vs. Model::find()

No Query object, only arrays

No Record object

Recursive and Containable should be kissed good bye

DboSource is dependent on the models and viceversa
A shiny new database layer

Clean separation of concerns: database layer should be usable
on its own

Create a rich query builder

Intelligent data types. Cross database support for database data
types (bigint, uuid, datetime, array, etc.)

Pluggable. Most aspect of this layer should swappable with
custom classes
Usable connection object
Custom data types
Query Object
Table Objects


Will represent the database table/collection

Responsible for actually persisting, finding, deleting records

Schema can be declared and managed here

Can be optionally created (a default object is used instead)

Will be very similar to what current CakePHP models are now
Record objects


Access record data

Provide getters and setters

Access associated model data

Save, delete and update themselves

Validation
Putting it all together
Using records
Undecided...



Model behaviors will be traits

Callbacks, some are table level others record level

Saving on associated objects
We need your help
    to deliver faster

More Related Content

What's hot

Installation of wordpress
Installation of wordpressInstallation of wordpress
Installation of wordpressHAINIRMALRAJ
 
PHP - History, Introduction, Summary, Extensions and Frameworks
PHP - History, Introduction, Summary, Extensions and FrameworksPHP - History, Introduction, Summary, Extensions and Frameworks
PHP - History, Introduction, Summary, Extensions and FrameworksRoyston Olivera
 
PHP presentation - Com 585
PHP presentation - Com 585PHP presentation - Com 585
PHP presentation - Com 585jstout007
 
Алексей Петров "PHP at Scale: Knowing enough to be dangerous!"
Алексей Петров "PHP at Scale: Knowing enough to be dangerous!"Алексей Петров "PHP at Scale: Knowing enough to be dangerous!"
Алексей Петров "PHP at Scale: Knowing enough to be dangerous!"Fwdays
 
Web Application Development using MVC Framework Kohana
Web Application Development using MVC Framework KohanaWeb Application Development using MVC Framework Kohana
Web Application Development using MVC Framework KohanaArafat Rahman
 
Browser APIs for data exchange: types and application
Browser APIs for data exchange: types and applicationBrowser APIs for data exchange: types and application
Browser APIs for data exchange: types and applicationPavel Klimiankou
 
Tutorial sederhana netbeans & xampp
Tutorial sederhana netbeans & xamppTutorial sederhana netbeans & xampp
Tutorial sederhana netbeans & xamppLailani Fitria
 
ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1Kumar S
 
Introduction to Symfony Components and helper components in Drupal 8
Introduction to Symfony Components and helper components in Drupal 8Introduction to Symfony Components and helper components in Drupal 8
Introduction to Symfony Components and helper components in Drupal 8Ankit Babbar
 
My self learing -Php
My self learing -PhpMy self learing -Php
My self learing -PhplaavanyaD2009
 
CPAN Dependency Heaven
CPAN Dependency HeavenCPAN Dependency Heaven
CPAN Dependency HeavenOpusVL
 

What's hot (19)

Installation of wordpress
Installation of wordpressInstallation of wordpress
Installation of wordpress
 
This is how we REST
This is how we RESTThis is how we REST
This is how we REST
 
PHP - History, Introduction, Summary, Extensions and Frameworks
PHP - History, Introduction, Summary, Extensions and FrameworksPHP - History, Introduction, Summary, Extensions and Frameworks
PHP - History, Introduction, Summary, Extensions and Frameworks
 
PHP presentation - Com 585
PHP presentation - Com 585PHP presentation - Com 585
PHP presentation - Com 585
 
Talking to Web Services
Talking to Web ServicesTalking to Web Services
Talking to Web Services
 
php basics
php basicsphp basics
php basics
 
Алексей Петров "PHP at Scale: Knowing enough to be dangerous!"
Алексей Петров "PHP at Scale: Knowing enough to be dangerous!"Алексей Петров "PHP at Scale: Knowing enough to be dangerous!"
Алексей Петров "PHP at Scale: Knowing enough to be dangerous!"
 
Web Application Development using MVC Framework Kohana
Web Application Development using MVC Framework KohanaWeb Application Development using MVC Framework Kohana
Web Application Development using MVC Framework Kohana
 
Php
PhpPhp
Php
 
Browser APIs for data exchange: types and application
Browser APIs for data exchange: types and applicationBrowser APIs for data exchange: types and application
Browser APIs for data exchange: types and application
 
Tutorial sederhana netbeans & xampp
Tutorial sederhana netbeans & xamppTutorial sederhana netbeans & xampp
Tutorial sederhana netbeans & xampp
 
ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1ASP.NET Tutorial - Presentation 1
ASP.NET Tutorial - Presentation 1
 
Migration from ASP to ASP.NET
Migration from ASP to ASP.NETMigration from ASP to ASP.NET
Migration from ASP to ASP.NET
 
Introduction to Symfony Components and helper components in Drupal 8
Introduction to Symfony Components and helper components in Drupal 8Introduction to Symfony Components and helper components in Drupal 8
Introduction to Symfony Components and helper components in Drupal 8
 
My self learing -Php
My self learing -PhpMy self learing -Php
My self learing -Php
 
CPAN Dependency Heaven
CPAN Dependency HeavenCPAN Dependency Heaven
CPAN Dependency Heaven
 
Http/2
Http/2Http/2
Http/2
 
Tutorial asp.net
Tutorial  asp.netTutorial  asp.net
Tutorial asp.net
 
Web server
Web serverWeb server
Web server
 

Viewers also liked

Using Backbone with CakePHP
Using Backbone with CakePHPUsing Backbone with CakePHP
Using Backbone with CakePHPRichard McIntyre
 
Customize CakePHP bake
Customize CakePHP bakeCustomize CakePHP bake
Customize CakePHP bakeKazuyuki Aoki
 
Simple search with elastic search
Simple search with elastic searchSimple search with elastic search
Simple search with elastic searchmarkstory
 
(주)소사이어티알렙 Society ALEF Inc.
(주)소사이어티알렙 Society ALEF Inc.(주)소사이어티알렙 Society ALEF Inc.
(주)소사이어티알렙 Society ALEF Inc.SJ Lee
 
CakePHP mistakes made
CakePHP mistakes madeCakePHP mistakes made
CakePHP mistakes mademarkstory
 
Recursive in CakePHP
Recursive in CakePHPRecursive in CakePHP
Recursive in CakePHPKetan Patel
 
미래형 신직업군 우리술 스토리텔러 사전설명회(게시)
미래형 신직업군 우리술 스토리텔러 사전설명회(게시)미래형 신직업군 우리술 스토리텔러 사전설명회(게시)
미래형 신직업군 우리술 스토리텔러 사전설명회(게시)SJ Lee
 
What Am I Chopped Lizard?
What Am I Chopped Lizard?What Am I Chopped Lizard?
What Am I Chopped Lizard?Paul Bass
 
술펀 2.0 소개
술펀 2.0 소개술펀 2.0 소개
술펀 2.0 소개SJ Lee
 
She Did Not Consider Her Destiny
She Did Not Consider Her DestinyShe Did Not Consider Her Destiny
She Did Not Consider Her DestinyDave Stewart
 
Religion and The Walking dead
Religion and The Walking deadReligion and The Walking dead
Religion and The Walking deadMark Wheller
 
10 Truths About The Holy Spirit
10 Truths About The Holy Spirit 10 Truths About The Holy Spirit
10 Truths About The Holy Spirit Charisma Magazine
 
The Future of Everything
The Future of EverythingThe Future of Everything
The Future of EverythingCharbel Zeaiter
 

Viewers also liked (20)

Using Backbone with CakePHP
Using Backbone with CakePHPUsing Backbone with CakePHP
Using Backbone with CakePHP
 
Making the most out of CakePHP 2.2
Making the most out of CakePHP 2.2Making the most out of CakePHP 2.2
Making the most out of CakePHP 2.2
 
Pluginize ALL the things
Pluginize ALL the thingsPluginize ALL the things
Pluginize ALL the things
 
Customize CakePHP bake
Customize CakePHP bakeCustomize CakePHP bake
Customize CakePHP bake
 
Sulfun miin
Sulfun miinSulfun miin
Sulfun miin
 
Simple search with elastic search
Simple search with elastic searchSimple search with elastic search
Simple search with elastic search
 
(주)소사이어티알렙 Society ALEF Inc.
(주)소사이어티알렙 Society ALEF Inc.(주)소사이어티알렙 Society ALEF Inc.
(주)소사이어티알렙 Society ALEF Inc.
 
CakePHP mistakes made
CakePHP mistakes madeCakePHP mistakes made
CakePHP mistakes made
 
Recursive in CakePHP
Recursive in CakePHPRecursive in CakePHP
Recursive in CakePHP
 
Advanced Querying with CakePHP 3
Advanced Querying with CakePHP 3Advanced Querying with CakePHP 3
Advanced Querying with CakePHP 3
 
미래형 신직업군 우리술 스토리텔러 사전설명회(게시)
미래형 신직업군 우리술 스토리텔러 사전설명회(게시)미래형 신직업군 우리술 스토리텔러 사전설명회(게시)
미래형 신직업군 우리술 스토리텔러 사전설명회(게시)
 
Agile database access with CakePHP 3
Agile database access with CakePHP 3Agile database access with CakePHP 3
Agile database access with CakePHP 3
 
sungmin slide
sungmin slidesungmin slide
sungmin slide
 
Random Life Hacks
Random Life HacksRandom Life Hacks
Random Life Hacks
 
What Am I Chopped Lizard?
What Am I Chopped Lizard?What Am I Chopped Lizard?
What Am I Chopped Lizard?
 
술펀 2.0 소개
술펀 2.0 소개술펀 2.0 소개
술펀 2.0 소개
 
She Did Not Consider Her Destiny
She Did Not Consider Her DestinyShe Did Not Consider Her Destiny
She Did Not Consider Her Destiny
 
Religion and The Walking dead
Religion and The Walking deadReligion and The Walking dead
Religion and The Walking dead
 
10 Truths About The Holy Spirit
10 Truths About The Holy Spirit 10 Truths About The Holy Spirit
10 Truths About The Holy Spirit
 
The Future of Everything
The Future of EverythingThe Future of Everything
The Future of Everything
 

Similar to CakePHP 3.0: Embracing the future

Similar to CakePHP 3.0: Embracing the future (20)

What is php
What is phpWhat is php
What is php
 
What is php
What is phpWhat is php
What is php
 
PHP & mySQL Training in Bangalore at myTectra
PHP & mySQL Training in Bangalore at myTectraPHP & mySQL Training in Bangalore at myTectra
PHP & mySQL Training in Bangalore at myTectra
 
P mysql training in bangalore
P mysql training in bangaloreP mysql training in bangalore
P mysql training in bangalore
 
web2py:Web development like a boss
web2py:Web development like a bossweb2py:Web development like a boss
web2py:Web development like a boss
 
Pithos - Architecture and .NET Technologies
Pithos - Architecture and .NET TechnologiesPithos - Architecture and .NET Technologies
Pithos - Architecture and .NET Technologies
 
How PHP works
How PHP works How PHP works
How PHP works
 
Krug Fat Client
Krug Fat ClientKrug Fat Client
Krug Fat Client
 
Kohana 3.1
Kohana 3.1Kohana 3.1
Kohana 3.1
 
JavaScript on the server - Node.js
JavaScript on the server - Node.jsJavaScript on the server - Node.js
JavaScript on the server - Node.js
 
Cakephp
CakephpCakephp
Cakephp
 
Cakephp
CakephpCakephp
Cakephp
 
Cakephp
CakephpCakephp
Cakephp
 
Webtechnologies
Webtechnologies Webtechnologies
Webtechnologies
 
Oss questions
Oss questionsOss questions
Oss questions
 
cakephp UDUYKTHA (1)
cakephp UDUYKTHA (1)cakephp UDUYKTHA (1)
cakephp UDUYKTHA (1)
 
Local Storage for Web Applications
Local Storage for Web ApplicationsLocal Storage for Web Applications
Local Storage for Web Applications
 
Php Frameworks
Php FrameworksPhp Frameworks
Php Frameworks
 
Dev212 Comparing Net And Java The View From 2006
Dev212 Comparing  Net And Java  The View From 2006Dev212 Comparing  Net And Java  The View From 2006
Dev212 Comparing Net And Java The View From 2006
 
PHP Courses in Chandigarh
PHP Courses in ChandigarhPHP Courses in Chandigarh
PHP Courses in Chandigarh
 

Recently uploaded

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 

Recently uploaded (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

CakePHP 3.0: Embracing the future

  • 1. CakePHP 3.0 Embracing the future
  • 3. I love scuba diving
  • 4. And enjoy all sorts of extreme Like rock climbing
  • 7. 7 years ago... PHP 4.3 was king PHP 5.1 was about to be released There was no PDO, no json extension by default, no unicode and no SPL Object orientation was very immature and buggy in PHP No actual frameworks on the market, there was xoops and mojavi (?)
  • 8. 7 years ago... CakePHP is released to the public to fix ALL THE THINGS
  • 9. A pioneer in PHP land MVC Convention over configuration Object oriented Active record like database abstraction Secure by default
  • 10. Always innovating... Unit testing 20 08 PHP implementation of multibyte extension Command line php shells Plugins! Reverse routing Behaviors, Form helper, pagination, caching, i18n and much more
  • 11. We made it flexible 20 10 Pluggable logging system Caching, session and javascript engines Localized validation Routing with custom classes Configurable paths
  • 12. Even more flexible and reliable! 20 PHP 5.2 11 Customizable error handlers Pluggable Auth component and email system PHPUnit PDO Request and Response objects
  • 13. Even more feature rich yet faster 20 View blocks 12 Content-type aware view classes Easier HTTP caching Configuration engines Middleware (Dispatcher filters) Generic events system
  • 14. Coming soon.. 20 12 CakePHP 2.3 PHP 5.4 local server Better encryption strategies for authentication Tons of small fixes that will just make you happier
  • 15. An increasing debt... Model layer is basically the same since PHP 4 No namespace support Inflexible in some parts due to original PHP object restrictions It could be faster Sometimes encourages bad coding practices
  • 16. Time to go back to the future
  • 17. Who needs PHP 5.3? Let’s go with 5.4 all the way!
  • 18. PHP 5.4, what we’re after Traits, they seem like a good way of implementing behaviors Closure binding, an alternative way of injecting finders or more behaviors JsonSerializable interface, easier web services It’s faster!
  • 20. We hate the wrong slash () We will keep as much as possible our current way of addressing to class names (using conventions and dot notation) Already prepared for this moment in 2.0, we are just replacing App::uses() with native “use” statements Classes will keep their suffixes, for instances PostsController will still be named the same instead of just “Posts”
  • 22. More freedom and clarity for you Unified configuration: No more Cache::config(), everything is setup in the Configure class now Remove obscurity and still use conventions. Each step of the bootstrapping process will be handled in a separate file
  • 26. Time to cut the fat Named params are going to be removed (no more /var:value/) Ability to set ssl, scheme, host and port in router calls Named routes for faster lookups Prefix routing to map subclasses Constant reverse routing time
  • 27. Prefixed actions No more mixing admin and non admin actions in the same class Prefixed routing will map to classes inside a namespace Instead of UsersController::admin_index() you will have AppControllerAdminUsersController::index()
  • 30. Current problems... Frankenstein models. Is it a record or a table? Inconsistent API. Model::read() vs. Model::find() No Query object, only arrays No Record object Recursive and Containable should be kissed good bye DboSource is dependent on the models and viceversa
  • 31. A shiny new database layer Clean separation of concerns: database layer should be usable on its own Create a rich query builder Intelligent data types. Cross database support for database data types (bigint, uuid, datetime, array, etc.) Pluggable. Most aspect of this layer should swappable with custom classes
  • 35. Table Objects Will represent the database table/collection Responsible for actually persisting, finding, deleting records Schema can be declared and managed here Can be optionally created (a default object is used instead) Will be very similar to what current CakePHP models are now
  • 36. Record objects Access record data Provide getters and setters Access associated model data Save, delete and update themselves Validation
  • 37. Putting it all together
  • 39. Undecided... Model behaviors will be traits Callbacks, some are table level others record level Saving on associated objects
  • 40. We need your help to deliver faster