SlideShare uma empresa Scribd logo
1 de 39
Fairfield County PHP Meetup




 Modular PHP dev using
CodeIgniter Bonfire
About Jeff Fox (@jfox015)
• Senior Level Web Developer
• Veteran of two browser wars and the dot-
  com bubble

• Fully self taught
• Studied Art and Music Production
• Baseball enthusiast (ney fanatic)
Meetup Overview
• MVC, CodeIgniter and HMVC in 5
    mins.
•   Intro to Bonfire (more than 5
    minutes)
•   Anatomy of a Bonfire Module
•   Practical Example
•   Q&A
Modular Development

Taking HUGE monolithic applications




and breaking them into manageable pieces
Modular Development

    "How the heck do we do that?"
Model, View, Controller




     Controllers
     handle requests




Models                      Views
                            present information
represent data
                            to the user
CodeIgniter
CodeIgniter



•    Popular Open Source PHP Framework

•    Simple MVC Based Architecture

•    Tons of tools and libraries to utilize in site
     development workflow

•    Flexible View system

•    Known for performance and documentation
CodeIgniter
CodeIgniter



•    Originally built and released by Ellis Labs, the
     Expression Engine people

•    "Reactor" is the community driven build and
     release initiative

•    Core team of developers oversee active
     development and releases

•    One of the "big three" PHP Frameworks
CodeIgniter
CodeIgniter




Application Flowchart
Hierarchical Model, View,
  Controller

HMVC Triads
call on and use other
MVC triads to
accomplish goals of
the application
CodeIgniter
  Bonfire
Bonfire Basics
CodeIgniter



• Open Source library built on top of
     CodeIgniter

• HMVC design using Modular Extensions
• Pre-built Administrative Dashboard
• Rich user authentication workflow
• Variety of site admin tools and utilities
Bonfire Basics
CodeIgniter



• Dashboard utilizes "contexts" for building
     admin tools

• Database migrations manage upgrades
     and fallbacks

• Custom Model class with built in SQL
     helper functionality

• Several classes of abstract controllers
Bonfire Basics
CodeIgniter



• Includes a system of roles to assign to
  users
• Robust permissions allows for precise
     control over site privileges and user
     access
•    Standard system for storing and
     accessing site settings
•    Includes a Module Builder wizard to
     generate fully compatible new modules
Functional Highlights
CodeIgniter



• Contexts provide a loosely coupled way
     to build Admin tools

• Naming conventions prevent hard coding
     menus

• Each module can have its own admin
     tools and still stay loosely coupled
Functional Highlights
CodeIgniter


Themes and Templates
• UI Based on the Twitter Bootstrap
  libraryBonfire uses a theme and
  template system for views
• Numerous helper functions are
  available to send data to view
  classes, select themes, manually set
  views, set messaging and render the
  content
Functional Highlights
 CodeIgniter


Themes and Templates – Examples
Template::set('current_url',
current_url());

Template::set_message('The comments
selected were successfully deleted.',
'success');

Template::set_view('comments/index');

Template::render();
Functional Highlights
CodeIgniter


Migrations
•    Implements the CodeIgninter Migrations
     class

•    Adds ability for modules to use migrations

•    Auto loading of new migrations on app
     startup (configuable via settings)

•    Can use DBforge or Codeigniter Database
     Class and SQL
Functional Highlights
CodeIgniter



public function up()
{
   $this->dbforge-
>add_column('comments_threads',
array('module' => array('type'=>
'VARCHAR','constraint'   => 255,'default'
      => ''));
}
public function down()
{
   $this->dbforge-
>drop_column("comments_threads","module");
}
Functional Highlights
CodeIgniter


Assets Lib
• Allows you to add JavaScript, images
  and CSS automatically in the head
  and/or footer of the site

Assets::add_js($this->load-
>view('thread_view_js',array('th
read_id'=>$thread_id), true),'in
line');
Functional Highlights
CodeIgniter


Modular Everything
•All core Dashboard features are
 modules
    •   Users         •   Translate Tool
    •   Activities    •   Module Builder
    •   Migrations    •   Logos
    •   Permissions   •   Emailer
    •   Roles         •   UI
    •   Settings      •   Updater
    •   Sysinfo       •   Database
Functional Highlights
CodeIgniter



Easy Install

Two step install
Like Wordpress
Bonfire Team
CodeIgniter




              Lonnie Ezell      Nuno Costa
              Project Founder
                                Ben Evans
                                Icehawg
              Sean Downey and many more on
                                Github.com

              Shawn Crigger
Anatomy of a
Bonfire Module
General Structure
CodeIgniter




• All third party and
     custom modules are
     stored in the "modules"
     folder in the bonfire
     directory.
•    Core modules live in
     the "core_modules"
     folder in the
     application directory.
General Structure
 CodeIgniter


 • Bonfire Modules are like little stand-alone
      CodeIgniter apps

 •    Modules follow the context naming convention
      system to allow access to their controllers
      throughout the site

 •    Can be 100% standalone or work with other
      modules

 •    Optimally can be dropped into other apps
Naming Conventions
 CodeIgniter



Controllers
• Public accessible, add
    controller with a name
    that matches the
    modules folder name
•   Admin Dashboard (Also
    called the Springboard)
    Controllers, add a
    controller that matches
    the context name
Naming Conventions
CodeIgniter




Auto-Resolving Views

• For public views, and index.php to
  the modules "Views" folder
• Admin views, add a folder for the
     matching context in the "Views"
     folder with an index.php file in it.
Naming Conventions
CodeIgniter




Manually Resolving Views
• In the controller, before calling
     Template::render(), add a line to set
     the view using
     Template::set_view('view');
•    Any view from any loaded module
     can be used simply by specifying the
     module path and view name
Config
CodeIgniter




• config.php contains a simple array that
     identifies the module to the application
     and contain it's meta information

• Config folder may contain other files used
     to store information about the app

• Custom routes.php files can be used to
     add additional levels of URL->controller
     routing
Controllers
CodeIgniter




• Contains all controllers used by the
     modules

• Should extend one of the four main
     Bonfire controller types:
      o Base_Controller
      o Front_Controller
      o Authenticated_Controller
      o Admin_Controller
Views
CodeIgniter



• Adding an index.php file to the views
     folder makes it publically accessible

• Adding folders named for supported
     admin contexts with index.php files makes
     them accessible from admin menus

• No limit to number of view files there can
     be, how they're organized outside context
     rules or how they're called
Misc
CodeIgniter



• Models follow general CI model rules.
     Should extend BF_Model to gain Bonfire
     helper functionality.

• Migrations are used to install DB support
     and handle changes

• Language files support translations
• Can add helpers, libraries and assets as
     well
Practical
Example
Q&A
Resources
Resources
 CodeIgniter

 • Bonfire Learning Center
  http://www.
  http://cibonfire.com/docs/guides/

 • Github Repository
  https://github.com/ci-
  bonfire/Bonfire
Resources
 CodeIgniter

 • Tutorials on MVC, HMVC, CodeIgniter
  at http://net.tutsplus.com/

  See MVC for Noobs, CodeIgniter from Scratch,
  HMVC: an Introduction and Application

 • OOWP For Developers Tutorials
  http://www.aeoliandigital.com/archi
  ves/category/oowp
Resources
 CodeIgniter

 Example Modules:
 • News:
   https://github.com/jfox015/Bonfire-
   News

 • Comments:
     https://github.com/jfox015/Bonfire-
     Comments

Mais conteúdo relacionado

Mais procurados

Iris segmentation analysis using integro differential operator and hough tran...
Iris segmentation analysis using integro differential operator and hough tran...Iris segmentation analysis using integro differential operator and hough tran...
Iris segmentation analysis using integro differential operator and hough tran...
Nadeer Abu Jraerr
 

Mais procurados (20)

Recent advances of AI for medical imaging : Engineering perspectives
Recent advances of AI for medical imaging : Engineering perspectivesRecent advances of AI for medical imaging : Engineering perspectives
Recent advances of AI for medical imaging : Engineering perspectives
 
TOWARDS DETECTION CYBER ATTACKS PPT 1.pptx
TOWARDS DETECTION CYBER ATTACKS PPT 1.pptxTOWARDS DETECTION CYBER ATTACKS PPT 1.pptx
TOWARDS DETECTION CYBER ATTACKS PPT 1.pptx
 
Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!
Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!
Web App for Containers + Cosmos DBで コンテナ対応したMEANアプリを作ろう!
 
Demystifying SAML 2.0,Oauth 2.0, OpenID Connect
Demystifying SAML 2.0,Oauth 2.0, OpenID ConnectDemystifying SAML 2.0,Oauth 2.0, OpenID Connect
Demystifying SAML 2.0,Oauth 2.0, OpenID Connect
 
Detecting Phishing using Machine Learning
Detecting Phishing using Machine LearningDetecting Phishing using Machine Learning
Detecting Phishing using Machine Learning
 
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
Building simple-app-using-.net 6 asp.net core web api-blazor web assembly-ela...
 
Maven基礎
Maven基礎Maven基礎
Maven基礎
 
What happens when you type google com into your browser and press enter
What happens when you type google com into your browser and press enterWhat happens when you type google com into your browser and press enter
What happens when you type google com into your browser and press enter
 
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
ハードコア デバッギング : サポート直伝! Windows カーネルモード デバッグ活用編!!
 
Google Analytics Alternatives
Google Analytics AlternativesGoogle Analytics Alternatives
Google Analytics Alternatives
 
Keycloak開発入門
Keycloak開発入門Keycloak開発入門
Keycloak開発入門
 
IT エンジニアのための 流し読み Windows 10 - Microsoft Defender ウイルス対策
IT エンジニアのための 流し読み Windows 10 - Microsoft Defender ウイルス対策IT エンジニアのための 流し読み Windows 10 - Microsoft Defender ウイルス対策
IT エンジニアのための 流し読み Windows 10 - Microsoft Defender ウイルス対策
 
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
殺しても死なないアプリ 〜Core Bluetooth の「状態の保存と復元」機能〜
 
Talking About SSRF,CRLF
Talking About SSRF,CRLFTalking About SSRF,CRLF
Talking About SSRF,CRLF
 
05. 마이크로서비스 아키텍처 환경에서의 SSO 구축방안
05. 마이크로서비스 아키텍처 환경에서의 SSO 구축방안05. 마이크로서비스 아키텍처 환경에서의 SSO 구축방안
05. 마이크로서비스 아키텍처 환경에서의 SSO 구축방안
 
OAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティOAuth 2.0の概要とセキュリティ
OAuth 2.0の概要とセキュリティ
 
イマドキ!ユースケース別に見るAWS IoT への接続パターン
イマドキ!ユースケース別に見るAWS IoT への接続パターンイマドキ!ユースケース別に見るAWS IoT への接続パターン
イマドキ!ユースケース別に見るAWS IoT への接続パターン
 
Object Detection with Tensorflow
Object Detection with TensorflowObject Detection with Tensorflow
Object Detection with Tensorflow
 
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
 
Iris segmentation analysis using integro differential operator and hough tran...
Iris segmentation analysis using integro differential operator and hough tran...Iris segmentation analysis using integro differential operator and hough tran...
Iris segmentation analysis using integro differential operator and hough tran...
 

Destaque

Oop in-php
Oop in-phpOop in-php
Oop in-php
Rajesh S
 
You must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular LibraryYou must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular Library
Bo-Yi Wu
 
2014 database - course 3 - PHP and MySQL
2014 database - course 3 - PHP and MySQL2014 database - course 3 - PHP and MySQL
2014 database - course 3 - PHP and MySQL
Hung-yu Lin
 
PHP Frameworks & Introduction to CodeIgniter
PHP Frameworks & Introduction to CodeIgniterPHP Frameworks & Introduction to CodeIgniter
PHP Frameworks & Introduction to CodeIgniter
Jamshid Hashimi
 
RESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP FrameworkRESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP Framework
Bo-Yi Wu
 

Destaque (20)

ACL in CodeIgniter
ACL in CodeIgniterACL in CodeIgniter
ACL in CodeIgniter
 
CodeIgniter - PHP MVC Framework by silicongulf.com
CodeIgniter - PHP MVC Framework by silicongulf.comCodeIgniter - PHP MVC Framework by silicongulf.com
CodeIgniter - PHP MVC Framework by silicongulf.com
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC Framework
 
Php mysql ppt
Php mysql pptPhp mysql ppt
Php mysql ppt
 
Codeigniter
CodeigniterCodeigniter
Codeigniter
 
Oop in-php
Oop in-phpOop in-php
Oop in-php
 
Modul 3 Cara Membuat View Pada CodeIgniter
Modul 3 Cara Membuat View Pada CodeIgniterModul 3 Cara Membuat View Pada CodeIgniter
Modul 3 Cara Membuat View Pada CodeIgniter
 
CodeIgniter 3.0
CodeIgniter 3.0CodeIgniter 3.0
CodeIgniter 3.0
 
You must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular LibraryYou must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular Library
 
Momchil Kyurkchiev Presentation
Momchil Kyurkchiev PresentationMomchil Kyurkchiev Presentation
Momchil Kyurkchiev Presentation
 
Benefits of the CodeIgniter Framework
Benefits of the CodeIgniter FrameworkBenefits of the CodeIgniter Framework
Benefits of the CodeIgniter Framework
 
Codeigniter : Two Step View - Concept Implementation
Codeigniter : Two Step View - Concept ImplementationCodeigniter : Two Step View - Concept Implementation
Codeigniter : Two Step View - Concept Implementation
 
2014 database - course 3 - PHP and MySQL
2014 database - course 3 - PHP and MySQL2014 database - course 3 - PHP and MySQL
2014 database - course 3 - PHP and MySQL
 
DB design
DB designDB design
DB design
 
Codeigniter
CodeigniterCodeigniter
Codeigniter
 
PHP Frameworks & Introduction to CodeIgniter
PHP Frameworks & Introduction to CodeIgniterPHP Frameworks & Introduction to CodeIgniter
PHP Frameworks & Introduction to CodeIgniter
 
REST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in CodeigniterREST API Best Practices & Implementing in Codeigniter
REST API Best Practices & Implementing in Codeigniter
 
Week 3 database design
Week 3   database designWeek 3   database design
Week 3 database design
 
Codeigniter : the security and the magic of hook
Codeigniter : the security and the magic of hookCodeigniter : the security and the magic of hook
Codeigniter : the security and the magic of hook
 
RESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP FrameworkRESTful API Design & Implementation with CodeIgniter PHP Framework
RESTful API Design & Implementation with CodeIgniter PHP Framework
 

Semelhante a Modular PHP Development using CodeIgniter Bonfire

Codestrong 2012 breakout session how to develop your own modules
Codestrong 2012 breakout session   how to develop your own modulesCodestrong 2012 breakout session   how to develop your own modules
Codestrong 2012 breakout session how to develop your own modules
Axway Appcelerator
 
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
camp_drupal_ua
 
Dot net Online Training | .Net Training and Placement online
Dot net Online Training | .Net Training and Placement onlineDot net Online Training | .Net Training and Placement online
Dot net Online Training | .Net Training and Placement online
Garuda Trainings
 

Semelhante a Modular PHP Development using CodeIgniter Bonfire (20)

Seminar.pptx
Seminar.pptxSeminar.pptx
Seminar.pptx
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2
 
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
 
Codeigniter framework
Codeigniter framework Codeigniter framework
Codeigniter framework
 
Codestrong 2012 breakout session how to develop your own modules
Codestrong 2012 breakout session   how to develop your own modulesCodestrong 2012 breakout session   how to develop your own modules
Codestrong 2012 breakout session how to develop your own modules
 
Introduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator TitaniumIntroduction to Module Development with Appcelerator Titanium
Introduction to Module Development with Appcelerator Titanium
 
Coonti in HelsinkiJS
Coonti in HelsinkiJSCoonti in HelsinkiJS
Coonti in HelsinkiJS
 
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
 
Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and Framework
 
Alibaba Cloud Conference 2016 - Docker Open Source
Alibaba Cloud Conference   2016 - Docker Open Source Alibaba Cloud Conference   2016 - Docker Open Source
Alibaba Cloud Conference 2016 - Docker Open Source
 
Code igniter development
Code igniter developmentCode igniter development
Code igniter development
 
Codeinator
CodeinatorCodeinator
Codeinator
 
Headless cms architecture
Headless cms architectureHeadless cms architecture
Headless cms architecture
 
Presentation 1 Web--dev
Presentation 1 Web--devPresentation 1 Web--dev
Presentation 1 Web--dev
 
Beyond Domino Designer
Beyond Domino DesignerBeyond Domino Designer
Beyond Domino Designer
 
East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4
East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4
East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4
 
Dot net Online Training | .Net Training and Placement online
Dot net Online Training | .Net Training and Placement onlineDot net Online Training | .Net Training and Placement online
Dot net Online Training | .Net Training and Placement online
 
72d5drupal
72d5drupal72d5drupal
72d5drupal
 
Get Codeigniter Developement Services From Us
 Get Codeigniter Developement Services From Us Get Codeigniter Developement Services From Us
Get Codeigniter Developement Services From Us
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+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...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
+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...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
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
 
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
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 

Modular PHP Development using CodeIgniter Bonfire

  • 1. Fairfield County PHP Meetup Modular PHP dev using CodeIgniter Bonfire
  • 2. About Jeff Fox (@jfox015) • Senior Level Web Developer • Veteran of two browser wars and the dot- com bubble • Fully self taught • Studied Art and Music Production • Baseball enthusiast (ney fanatic)
  • 3. Meetup Overview • MVC, CodeIgniter and HMVC in 5 mins. • Intro to Bonfire (more than 5 minutes) • Anatomy of a Bonfire Module • Practical Example • Q&A
  • 4. Modular Development Taking HUGE monolithic applications and breaking them into manageable pieces
  • 5. Modular Development "How the heck do we do that?"
  • 6. Model, View, Controller Controllers handle requests Models Views present information represent data to the user
  • 7. CodeIgniter CodeIgniter • Popular Open Source PHP Framework • Simple MVC Based Architecture • Tons of tools and libraries to utilize in site development workflow • Flexible View system • Known for performance and documentation
  • 8. CodeIgniter CodeIgniter • Originally built and released by Ellis Labs, the Expression Engine people • "Reactor" is the community driven build and release initiative • Core team of developers oversee active development and releases • One of the "big three" PHP Frameworks
  • 10. Hierarchical Model, View, Controller HMVC Triads call on and use other MVC triads to accomplish goals of the application
  • 12. Bonfire Basics CodeIgniter • Open Source library built on top of CodeIgniter • HMVC design using Modular Extensions • Pre-built Administrative Dashboard • Rich user authentication workflow • Variety of site admin tools and utilities
  • 13. Bonfire Basics CodeIgniter • Dashboard utilizes "contexts" for building admin tools • Database migrations manage upgrades and fallbacks • Custom Model class with built in SQL helper functionality • Several classes of abstract controllers
  • 14. Bonfire Basics CodeIgniter • Includes a system of roles to assign to users • Robust permissions allows for precise control over site privileges and user access • Standard system for storing and accessing site settings • Includes a Module Builder wizard to generate fully compatible new modules
  • 15. Functional Highlights CodeIgniter • Contexts provide a loosely coupled way to build Admin tools • Naming conventions prevent hard coding menus • Each module can have its own admin tools and still stay loosely coupled
  • 16. Functional Highlights CodeIgniter Themes and Templates • UI Based on the Twitter Bootstrap libraryBonfire uses a theme and template system for views • Numerous helper functions are available to send data to view classes, select themes, manually set views, set messaging and render the content
  • 17. Functional Highlights CodeIgniter Themes and Templates – Examples Template::set('current_url', current_url()); Template::set_message('The comments selected were successfully deleted.', 'success'); Template::set_view('comments/index'); Template::render();
  • 18. Functional Highlights CodeIgniter Migrations • Implements the CodeIgninter Migrations class • Adds ability for modules to use migrations • Auto loading of new migrations on app startup (configuable via settings) • Can use DBforge or Codeigniter Database Class and SQL
  • 19. Functional Highlights CodeIgniter public function up() { $this->dbforge- >add_column('comments_threads', array('module' => array('type'=> 'VARCHAR','constraint' => 255,'default' => '')); } public function down() { $this->dbforge- >drop_column("comments_threads","module"); }
  • 20. Functional Highlights CodeIgniter Assets Lib • Allows you to add JavaScript, images and CSS automatically in the head and/or footer of the site Assets::add_js($this->load- >view('thread_view_js',array('th read_id'=>$thread_id), true),'in line');
  • 21. Functional Highlights CodeIgniter Modular Everything •All core Dashboard features are modules • Users • Translate Tool • Activities • Module Builder • Migrations • Logos • Permissions • Emailer • Roles • UI • Settings • Updater • Sysinfo • Database
  • 23. Bonfire Team CodeIgniter Lonnie Ezell Nuno Costa Project Founder Ben Evans Icehawg Sean Downey and many more on Github.com Shawn Crigger
  • 25. General Structure CodeIgniter • All third party and custom modules are stored in the "modules" folder in the bonfire directory. • Core modules live in the "core_modules" folder in the application directory.
  • 26. General Structure CodeIgniter • Bonfire Modules are like little stand-alone CodeIgniter apps • Modules follow the context naming convention system to allow access to their controllers throughout the site • Can be 100% standalone or work with other modules • Optimally can be dropped into other apps
  • 27. Naming Conventions CodeIgniter Controllers • Public accessible, add controller with a name that matches the modules folder name • Admin Dashboard (Also called the Springboard) Controllers, add a controller that matches the context name
  • 28. Naming Conventions CodeIgniter Auto-Resolving Views • For public views, and index.php to the modules "Views" folder • Admin views, add a folder for the matching context in the "Views" folder with an index.php file in it.
  • 29. Naming Conventions CodeIgniter Manually Resolving Views • In the controller, before calling Template::render(), add a line to set the view using Template::set_view('view'); • Any view from any loaded module can be used simply by specifying the module path and view name
  • 30. Config CodeIgniter • config.php contains a simple array that identifies the module to the application and contain it's meta information • Config folder may contain other files used to store information about the app • Custom routes.php files can be used to add additional levels of URL->controller routing
  • 31. Controllers CodeIgniter • Contains all controllers used by the modules • Should extend one of the four main Bonfire controller types: o Base_Controller o Front_Controller o Authenticated_Controller o Admin_Controller
  • 32. Views CodeIgniter • Adding an index.php file to the views folder makes it publically accessible • Adding folders named for supported admin contexts with index.php files makes them accessible from admin menus • No limit to number of view files there can be, how they're organized outside context rules or how they're called
  • 33. Misc CodeIgniter • Models follow general CI model rules. Should extend BF_Model to gain Bonfire helper functionality. • Migrations are used to install DB support and handle changes • Language files support translations • Can add helpers, libraries and assets as well
  • 35. Q&A
  • 37. Resources CodeIgniter • Bonfire Learning Center http://www. http://cibonfire.com/docs/guides/ • Github Repository https://github.com/ci- bonfire/Bonfire
  • 38. Resources CodeIgniter • Tutorials on MVC, HMVC, CodeIgniter at http://net.tutsplus.com/ See MVC for Noobs, CodeIgniter from Scratch, HMVC: an Introduction and Application • OOWP For Developers Tutorials http://www.aeoliandigital.com/archi ves/category/oowp
  • 39. Resources CodeIgniter Example Modules: • News: https://github.com/jfox015/Bonfire- News • Comments: https://github.com/jfox015/Bonfire- Comments