modular php development using codeigniter bonfire

Download Modular PHP Development using CodeIgniter Bonfire

Post on 01-Nov-2014




4 download

Embed Size (px)


An overview of the Bonfire library for CodeIgniter and how it allows you to build robust modular applications


  • 1. Fairfield County PHP Meetup Modular PHP dev usingCodeIgniter 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 DevelopmentTaking HUGE monolithic applicationsand breaking them into manageable pieces
  • 5. Modular Development "How the heck do we do that?"
  • 6. Model, View, Controller Controllers handle requestsModels Views present informationrepresent data to the user
  • 7. CodeIgniterCodeIgniter 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. CodeIgniterCodeIgniter 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
  • 9. CodeIgniterCodeIgniterApplication Flowchart
  • 10. Hierarchical Model, View, ControllerHMVC Triadscall on and use otherMVC triads toaccomplish goals ofthe application
  • 11. CodeIgniter Bonfire
  • 12. Bonfire BasicsCodeIgniter 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 BasicsCodeIgniter 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 BasicsCodeIgniter 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 HighlightsCodeIgniter 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 HighlightsCodeIgniterThemes 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 CodeIgniterThemes and Templates ExamplesTemplate::set(current_url,current_url());Template::set_message(The commentsselected were successfully deleted.,success);Template::set_view(comments/index);Template::render();
  • 18. Functional HighlightsCodeIgniterMigrations 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 HighlightsCodeIgniterpublic 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 HighlightsCodeIgniterAssets Lib Allows you to add JavaScript, images and CSS automatically in the head and/or footer of the siteAssets::add_js($this->load->view(thread_view_js,array(thread_id=>$thread_id), true),inline);
  • 21. Functional HighlightsCodeIgniterModular EverythingAll core Dashboard features are modules Users Translate Tool Activities Module Builder Migrations Logos Permissions Emailer Roles UI Settings Updater Sysinfo Database
  • 22. Functional HighlightsCodeIgniterEasy InstallTwo step installLike Wordpress
  • 23. Bonfire TeamCodeIgniter Lonnie Ezell Nuno Costa Project Founder Ben Evans Icehawg Sean Downey and many more on Shawn Crigger
  • 24. Anatomy of aBonfire Module
  • 25. General StructureCodeIgniter 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 CodeIgniterControllers 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 ConventionsCodeIgniterAuto-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 ConventionsCodeIgniterManually 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. ConfigCodeIgniter config.php contains a simple array that identifies the module to the application and contain its 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. ControllersCodeIgniter 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. ViewsCodeIgniter 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 theyre organized outside context rules or how theyre called
  • 33. MiscCodeIgniter 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