SlideShare a Scribd company logo
1 of 26
Do we really need another
   PHP Framework?
About Me
Professionally developing software since 2003
Focus on web, mobile and game development
Into the gaming industry since 2008
Former Lead developer – Web Games @
Gameforge
Now gun for hire: Eckert Internet Services
Yii?
Yii is an acronym for „Yes it is!“, the answer to
  the most likely asked questions regarding a
  framework:
Is it fast?
Is it secure?
Is it professional?
Is it right for my next project?


Pretty self-confident, hm?
Yiiwhat?
Started in 2008 by former PRADO developer
 Qianq Xue
Team of 7 core developers
No release for some months but active
 maintenance on Github
Facebook page & Google Group
Small but professional community
Features at a glance
RAD Widgets (View helpers, ListView, GridView)
AR, DAO, Query Builder, Database Migration
Massive Extensibility (DI, Behaviours, Events, Hooks,
 Modules …) => Useful Extensions!
Nice Routing
Good security mechanisms
Scaffolding and Console Applications



lean, clean, reusable code
RAD Widgets
Easy menu




GridView of (model)data



       Configurable in detail, or use as is!
RAD Widgets II
Instead of stand-alone widgets there are also
  widgets that work on your HTML
Active Record
Work with your database in an object oriented
 fashion
Active Record II
Yii's AR is quite sophisticated!
Active Record – Relations
Relations are easy-peasy
Active Record – Scopes
Define WYG (What you get)
Active Record – Behaviors
Define how it acts!
So Active Record is the holy grail!
Active Record is convenient
BUT: DO NOT use AR on data driven tables (like
 logs or tables where the throughput is high!)
Every row is reflected as an object
Think!
If the usecase doesn't favour AR, use DAO!
Power <=> Responsibility
Data Access Objects
Use it if you need lots of datasets at once.
Conclusion AR vs. DAO
AR is convenient to use
Most widgets support AR (but also DAO in some
 ways)
Code generation through Gii
If you have tables where lots of records are
   accessed at once, use DAO!
Don't stop to think because it's easy to work
 with!
Hooks
Every CComponent (almost everything in Yii)
 calls hooks before/after specified actions:
beforeValidate/afterValidate
beforeSave/afterSave
beforeDelete/afterDelete
beforeFind/afterFind
beforeRender/afterRender
… uncomplete list, also fired as events.
          Need to react? Just hook in!
Again: Think!
Hooks and Events can trigger many actions
 without caring about them (Observer Pattern).
 So react on them wisely!
  e.g. User registers:
     Action to send mail to user is triggered
     Action to send mail to admin is triggered
     Creating a user profile
     Generating a pdf invoice is triggered
     ...
Security - XSS
Just use the proper Widgets and methods:
Security - XSRF
Activate XSRF token




Use POST requests for important actions
 (like deleting, adding etc.)



           That's all you need to do!
Extensions / Modules
Modules are self-contained MVCs and nestable
Can interact with core application. Nice for
 administrative frontend, JSON webservice etc.
Lots of useful extensions already available
Console Applications
Most likely: Cronjobs
Implement in a MVC like fashion




Friendly console:
Embedded Console Applications
Generate message files from application (l8n)
Generate new app skeleton
Migrate database command
… and some shell commands (code gen.)
And more...
Easy Internationalization / Localisation
ACL / RBAC (lots of options and possibilities)
Caching on certain levels
PHP-Unit / Selenium Support
Almost ALL Core Components are replacable by
  DI (Request, Session, Cookie, …)
  => maximum flexibility
Do we really need another
   PHP Framework?


          E S !
      Y
Questions?




????
Thank you!

@nerdlibfront
                   https://www.xing.com/profile/Joachim_Eckert

    www.eisit.de

          eckert@eisit.de

More Related Content

What's hot

Azure Ninja Tips and Tricks
Azure Ninja Tips and TricksAzure Ninja Tips and Tricks
Azure Ninja Tips and TricksTodd Whitehead
 
iOS development best practices
iOS development best practicesiOS development best practices
iOS development best practicesMichal Juhas
 
Back to the ng2 Future
Back to the ng2 FutureBack to the ng2 Future
Back to the ng2 FutureJeremy Likness
 
AJAX Frameworks
AJAX FrameworksAJAX Frameworks
AJAX Frameworksshank
 
Cloud Dev with Azure Functions - DogFoodCon 2018 - Brian T Jackett
Cloud Dev with Azure Functions - DogFoodCon 2018 - Brian T JackettCloud Dev with Azure Functions - DogFoodCon 2018 - Brian T Jackett
Cloud Dev with Azure Functions - DogFoodCon 2018 - Brian T JackettBrian T. Jackett
 
Domain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCDomain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCSteven Smith
 
Open Source & Identity Management
Open Source & Identity ManagementOpen Source & Identity Management
Open Source & Identity ManagementJISC Netskills
 
INTERFACE, by apidays - APIs of the Future: Are you Ready? by Mike Amundsen
INTERFACE, by apidays  - APIs of the Future: Are you Ready? by Mike AmundsenINTERFACE, by apidays  - APIs of the Future: Are you Ready? by Mike Amundsen
INTERFACE, by apidays - APIs of the Future: Are you Ready? by Mike Amundsenapidays
 
How AI is creating what's next in government
How AI is creating what's next in governmentHow AI is creating what's next in government
How AI is creating what's next in governmentTina Meek
 
Unity and Microsoft Azure Cognitive Services - DIGITREK21 Workshop
Unity and Microsoft Azure Cognitive Services - DIGITREK21 WorkshopUnity and Microsoft Azure Cognitive Services - DIGITREK21 Workshop
Unity and Microsoft Azure Cognitive Services - DIGITREK21 WorkshopPablo Farías Navarro
 
A Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed ApplicationA Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed ApplicationDavid Hoerster
 

What's hot (12)

Azure Ninja Tips and Tricks
Azure Ninja Tips and TricksAzure Ninja Tips and Tricks
Azure Ninja Tips and Tricks
 
iOS development best practices
iOS development best practicesiOS development best practices
iOS development best practices
 
Back to the ng2 Future
Back to the ng2 FutureBack to the ng2 Future
Back to the ng2 Future
 
AJAX Frameworks
AJAX FrameworksAJAX Frameworks
AJAX Frameworks
 
Cloud Dev with Azure Functions - DogFoodCon 2018 - Brian T Jackett
Cloud Dev with Azure Functions - DogFoodCon 2018 - Brian T JackettCloud Dev with Azure Functions - DogFoodCon 2018 - Brian T Jackett
Cloud Dev with Azure Functions - DogFoodCon 2018 - Brian T Jackett
 
Domain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCDomain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVC
 
Open Source & Identity Management
Open Source & Identity ManagementOpen Source & Identity Management
Open Source & Identity Management
 
Selenium
SeleniumSelenium
Selenium
 
INTERFACE, by apidays - APIs of the Future: Are you Ready? by Mike Amundsen
INTERFACE, by apidays  - APIs of the Future: Are you Ready? by Mike AmundsenINTERFACE, by apidays  - APIs of the Future: Are you Ready? by Mike Amundsen
INTERFACE, by apidays - APIs of the Future: Are you Ready? by Mike Amundsen
 
How AI is creating what's next in government
How AI is creating what's next in governmentHow AI is creating what's next in government
How AI is creating what's next in government
 
Unity and Microsoft Azure Cognitive Services - DIGITREK21 Workshop
Unity and Microsoft Azure Cognitive Services - DIGITREK21 WorkshopUnity and Microsoft Azure Cognitive Services - DIGITREK21 Workshop
Unity and Microsoft Azure Cognitive Services - DIGITREK21 Workshop
 
A Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed ApplicationA Minimalist’s Attempt at Building a Distributed Application
A Minimalist’s Attempt at Building a Distributed Application
 

Viewers also liked

введение в психогеометрию
введение в психогеометриювведение в психогеометрию
введение в психогеометриюmaster-sva
 
Основы музыкального бизнеса. Часть 1
Основы музыкального бизнеса. Часть 1Основы музыкального бизнеса. Часть 1
Основы музыкального бизнеса. Часть 1Alexey Nikolaev
 
Andrea Sharfin Friedenson - How to Get Reporters to Cover Your Startup
Andrea Sharfin Friedenson  - How to Get Reporters to Cover Your StartupAndrea Sharfin Friedenson  - How to Get Reporters to Cover Your Startup
Andrea Sharfin Friedenson - How to Get Reporters to Cover Your StartupAndrea Sharfin Friedenson
 
4 Mosse per rovinarti le relazioni in un istante
4 Mosse per rovinarti le relazioni in un istante4 Mosse per rovinarti le relazioni in un istante
4 Mosse per rovinarti le relazioni in un istanteGio Garavello
 
Hombro inserciones tendinosas 3 (1)
Hombro inserciones tendinosas 3 (1)Hombro inserciones tendinosas 3 (1)
Hombro inserciones tendinosas 3 (1)Alejandro Ch
 
Come redere felice la tua vita in un'ora
Come redere felice la tua vita in un'oraCome redere felice la tua vita in un'ora
Come redere felice la tua vita in un'oraGio Garavello
 
Bangaldesh Regional Dialects
Bangaldesh Regional DialectsBangaldesh Regional Dialects
Bangaldesh Regional DialectsDr Nahin Mamun
 
Oasis october
Oasis octoberOasis october
Oasis octoberadshock
 
Google bought you tube
Google bought you tubeGoogle bought you tube
Google bought you tubekayacankayacan
 
Value-Inspired Testing - renovating Risk-Based Testing, & innovating with Eme...
Value-Inspired Testing - renovating Risk-Based Testing, & innovating with Eme...Value-Inspired Testing - renovating Risk-Based Testing, & innovating with Eme...
Value-Inspired Testing - renovating Risk-Based Testing, & innovating with Eme...Neil Thompson
 
CV_ Avikalp Mishra_2015
CV_ Avikalp Mishra_2015CV_ Avikalp Mishra_2015
CV_ Avikalp Mishra_2015Avikalp Mishra
 
Creativity in Softwaredevelopment
Creativity in SoftwaredevelopmentCreativity in Softwaredevelopment
Creativity in SoftwaredevelopmentJoachim Eckert
 
July Construction Update; CA Upper School
July Construction Update; CA Upper SchoolJuly Construction Update; CA Upper School
July Construction Update; CA Upper SchoolColoradoAcademy
 

Viewers also liked (20)

Job Search Simulation
Job Search SimulationJob Search Simulation
Job Search Simulation
 
введение в психогеометрию
введение в психогеометриювведение в психогеометрию
введение в психогеометрию
 
Основы музыкального бизнеса. Часть 1
Основы музыкального бизнеса. Часть 1Основы музыкального бизнеса. Часть 1
Основы музыкального бизнеса. Часть 1
 
02. TCI Carbon
02. TCI Carbon02. TCI Carbon
02. TCI Carbon
 
Andrea Sharfin Friedenson - How to Get Reporters to Cover Your Startup
Andrea Sharfin Friedenson  - How to Get Reporters to Cover Your StartupAndrea Sharfin Friedenson  - How to Get Reporters to Cover Your Startup
Andrea Sharfin Friedenson - How to Get Reporters to Cover Your Startup
 
4 Mosse per rovinarti le relazioni in un istante
4 Mosse per rovinarti le relazioni in un istante4 Mosse per rovinarti le relazioni in un istante
4 Mosse per rovinarti le relazioni in un istante
 
Bab v
Bab vBab v
Bab v
 
Hombro inserciones tendinosas 3 (1)
Hombro inserciones tendinosas 3 (1)Hombro inserciones tendinosas 3 (1)
Hombro inserciones tendinosas 3 (1)
 
Come redere felice la tua vita in un'ora
Come redere felice la tua vita in un'oraCome redere felice la tua vita in un'ora
Come redere felice la tua vita in un'ora
 
Herring overview
Herring overviewHerring overview
Herring overview
 
Bangaldesh Regional Dialects
Bangaldesh Regional DialectsBangaldesh Regional Dialects
Bangaldesh Regional Dialects
 
Oasis october
Oasis octoberOasis october
Oasis october
 
Who am I?
Who am I?Who am I?
Who am I?
 
Fitbit
FitbitFitbit
Fitbit
 
Google bought you tube
Google bought you tubeGoogle bought you tube
Google bought you tube
 
Value-Inspired Testing - renovating Risk-Based Testing, & innovating with Eme...
Value-Inspired Testing - renovating Risk-Based Testing, & innovating with Eme...Value-Inspired Testing - renovating Risk-Based Testing, & innovating with Eme...
Value-Inspired Testing - renovating Risk-Based Testing, & innovating with Eme...
 
CV_ Avikalp Mishra_2015
CV_ Avikalp Mishra_2015CV_ Avikalp Mishra_2015
CV_ Avikalp Mishra_2015
 
Creativity in Softwaredevelopment
Creativity in SoftwaredevelopmentCreativity in Softwaredevelopment
Creativity in Softwaredevelopment
 
ฟุตบอลไทย
ฟุตบอลไทยฟุตบอลไทย
ฟุตบอลไทย
 
July Construction Update; CA Upper School
July Construction Update; CA Upper SchoolJuly Construction Update; CA Upper School
July Construction Update; CA Upper School
 

Similar to Yii Framework - Do we really need another php framework?

An introduction to Titanium
An introduction to TitaniumAn introduction to Titanium
An introduction to TitaniumGraham Weldon
 
The 90-Day Startup with Google AppEngine for Java
The 90-Day Startup with Google AppEngine for JavaThe 90-Day Startup with Google AppEngine for Java
The 90-Day Startup with Google AppEngine for JavaDavid Chandler
 
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsBusy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsJAX London
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net coreSam Nasr, MCSA, MVP
 
MongoDB World 2019: In-App Bug Reporting
MongoDB World 2019: In-App Bug ReportingMongoDB World 2019: In-App Bug Reporting
MongoDB World 2019: In-App Bug ReportingMongoDB
 
Agile Development with OSGi
Agile Development with OSGiAgile Development with OSGi
Agile Development with OSGiMatt Stine
 
Has serverless adoption hit a roadblock?
Has serverless adoption hit a roadblock?Has serverless adoption hit a roadblock?
Has serverless adoption hit a roadblock?Veselin Pizurica
 
[CocoaHeads Tricity] Do not reinvent the wheel
[CocoaHeads Tricity] Do not reinvent the wheel[CocoaHeads Tricity] Do not reinvent the wheel
[CocoaHeads Tricity] Do not reinvent the wheelMateusz Klimczak
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web DevelopmentRobert J. Stein
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudMicrosoft ArcReady
 
.NET Recommended Resources
.NET Recommended Resources.NET Recommended Resources
.NET Recommended ResourcesGreg Sohl
 

Similar to Yii Framework - Do we really need another php framework? (20)

An introduction to Titanium
An introduction to TitaniumAn introduction to Titanium
An introduction to Titanium
 
The 90-Day Startup with Google AppEngine for Java
The 90-Day Startup with Google AppEngine for JavaThe 90-Day Startup with Google AppEngine for Java
The 90-Day Startup with Google AppEngine for Java
 
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript AppsBusy Developer's Guide to Windows 8 HTML/JavaScript Apps
Busy Developer's Guide to Windows 8 HTML/JavaScript Apps
 
Isset Presentation @ EECI2009
Isset Presentation @ EECI2009Isset Presentation @ EECI2009
Isset Presentation @ EECI2009
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Intro to Application Express
Intro to Application ExpressIntro to Application Express
Intro to Application Express
 
MongoDB World 2019: In-App Bug Reporting
MongoDB World 2019: In-App Bug ReportingMongoDB World 2019: In-App Bug Reporting
MongoDB World 2019: In-App Bug Reporting
 
Agile Development with OSGi
Agile Development with OSGiAgile Development with OSGi
Agile Development with OSGi
 
Yii framework
Yii frameworkYii framework
Yii framework
 
Has serverless adoption hit a roadblock?
Has serverless adoption hit a roadblock?Has serverless adoption hit a roadblock?
Has serverless adoption hit a roadblock?
 
Yii Framework
Yii FrameworkYii Framework
Yii Framework
 
Widgets WorkShop for Libraries
Widgets WorkShop for LibrariesWidgets WorkShop for Libraries
Widgets WorkShop for Libraries
 
[CocoaHeads Tricity] Do not reinvent the wheel
[CocoaHeads Tricity] Do not reinvent the wheel[CocoaHeads Tricity] Do not reinvent the wheel
[CocoaHeads Tricity] Do not reinvent the wheel
 
Introduce Yii
Introduce YiiIntroduce Yii
Introduce Yii
 
Chapter 1-Note.docx
Chapter 1-Note.docxChapter 1-Note.docx
Chapter 1-Note.docx
 
Advanced Web Development
Advanced Web DevelopmentAdvanced Web Development
Advanced Web Development
 
Android Deep Dive
Android Deep DiveAndroid Deep Dive
Android Deep Dive
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The Cloud
 
.NET Recommended Resources
.NET Recommended Resources.NET Recommended Resources
.NET Recommended Resources
 
Uma SunilKumar Resume
Uma SunilKumar ResumeUma SunilKumar Resume
Uma SunilKumar Resume
 

Recently uploaded

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Recently uploaded (20)

My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

Yii Framework - Do we really need another php framework?

  • 1. Do we really need another PHP Framework?
  • 2. About Me Professionally developing software since 2003 Focus on web, mobile and game development Into the gaming industry since 2008 Former Lead developer – Web Games @ Gameforge Now gun for hire: Eckert Internet Services
  • 3. Yii? Yii is an acronym for „Yes it is!“, the answer to the most likely asked questions regarding a framework: Is it fast? Is it secure? Is it professional? Is it right for my next project? Pretty self-confident, hm?
  • 4. Yiiwhat? Started in 2008 by former PRADO developer Qianq Xue Team of 7 core developers No release for some months but active maintenance on Github Facebook page & Google Group Small but professional community
  • 5. Features at a glance RAD Widgets (View helpers, ListView, GridView) AR, DAO, Query Builder, Database Migration Massive Extensibility (DI, Behaviours, Events, Hooks, Modules …) => Useful Extensions! Nice Routing Good security mechanisms Scaffolding and Console Applications lean, clean, reusable code
  • 6. RAD Widgets Easy menu GridView of (model)data Configurable in detail, or use as is!
  • 7. RAD Widgets II Instead of stand-alone widgets there are also widgets that work on your HTML
  • 8. Active Record Work with your database in an object oriented fashion
  • 9. Active Record II Yii's AR is quite sophisticated!
  • 10. Active Record – Relations Relations are easy-peasy
  • 11. Active Record – Scopes Define WYG (What you get)
  • 12. Active Record – Behaviors Define how it acts!
  • 13. So Active Record is the holy grail! Active Record is convenient BUT: DO NOT use AR on data driven tables (like logs or tables where the throughput is high!) Every row is reflected as an object Think! If the usecase doesn't favour AR, use DAO! Power <=> Responsibility
  • 14. Data Access Objects Use it if you need lots of datasets at once.
  • 15. Conclusion AR vs. DAO AR is convenient to use Most widgets support AR (but also DAO in some ways) Code generation through Gii If you have tables where lots of records are accessed at once, use DAO! Don't stop to think because it's easy to work with!
  • 16. Hooks Every CComponent (almost everything in Yii) calls hooks before/after specified actions: beforeValidate/afterValidate beforeSave/afterSave beforeDelete/afterDelete beforeFind/afterFind beforeRender/afterRender … uncomplete list, also fired as events. Need to react? Just hook in!
  • 17. Again: Think! Hooks and Events can trigger many actions without caring about them (Observer Pattern). So react on them wisely! e.g. User registers: Action to send mail to user is triggered Action to send mail to admin is triggered Creating a user profile Generating a pdf invoice is triggered ...
  • 18. Security - XSS Just use the proper Widgets and methods:
  • 19. Security - XSRF Activate XSRF token Use POST requests for important actions (like deleting, adding etc.) That's all you need to do!
  • 20. Extensions / Modules Modules are self-contained MVCs and nestable Can interact with core application. Nice for administrative frontend, JSON webservice etc. Lots of useful extensions already available
  • 21. Console Applications Most likely: Cronjobs Implement in a MVC like fashion Friendly console:
  • 22. Embedded Console Applications Generate message files from application (l8n) Generate new app skeleton Migrate database command … and some shell commands (code gen.)
  • 23. And more... Easy Internationalization / Localisation ACL / RBAC (lots of options and possibilities) Caching on certain levels PHP-Unit / Selenium Support Almost ALL Core Components are replacable by DI (Request, Session, Cookie, …) => maximum flexibility
  • 24. Do we really need another PHP Framework? E S ! Y
  • 26. Thank you! @nerdlibfront https://www.xing.com/profile/Joachim_Eckert www.eisit.de eckert@eisit.de