Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Modular PHP Development using CodeIgniter Bonfire

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

  • Inicia sesión para ver los comentarios

Modular PHP Development using CodeIgniter Bonfire

  1. 1. Fairfield County PHP Meetup Modular PHP dev usingCodeIgniter Bonfire
  2. 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. 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. 4. Modular DevelopmentTaking HUGE monolithic applicationsand breaking them into manageable pieces
  5. 5. Modular Development "How the heck do we do that?"
  6. 6. Model, View, Controller Controllers handle requestsModels Views present informationrepresent data to the user
  7. 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. 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. 9. CodeIgniterCodeIgniterApplication Flowchart
  10. 10. Hierarchical Model, View, ControllerHMVC Triadscall on and use otherMVC triads toaccomplish goals ofthe application
  11. 11. CodeIgniter Bonfire
  12. 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. 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. 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. 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. 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. 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. 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. 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. 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. 21. Functional HighlightsCodeIgniterModular Everything•All core Dashboard features are modules • Users • Translate Tool • Activities • Module Builder • Migrations • Logos • Permissions • Emailer • Roles • UI • Settings • Updater • Sysinfo • Database
  22. 22. Functional HighlightsCodeIgniterEasy InstallTwo step installLike Wordpress
  23. 23. Bonfire TeamCodeIgniter Lonnie Ezell Nuno Costa Project Founder Ben Evans Icehawg Sean Downey and many more on Shawn Crigger
  24. 24. Anatomy of aBonfire Module
  25. 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. 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. 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. 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. 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. 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. 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. 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. 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 helpers, libraries and assets as well
  34. 34. PracticalExample
  35. 35. Q&A
  36. 36. Resources
  37. 37. Resources CodeIgniter • Bonfire Learning Center http://www. • Github Repository bonfire/Bonfire
  38. 38. Resources CodeIgniter • Tutorials on MVC, HMVC, CodeIgniter at See MVC for Noobs, CodeIgniter from Scratch, HMVC: an Introduction and Application • OOWP For Developers Tutorials ves/category/oowp
  39. 39. Resources CodeIgniter Example Modules: • News: News • Comments: Comments