I am about to start writing my first big CodeIgniter application, but before I get started I was wondering what the role of libraries should be. I’m a newbie to MVC, but from what I gather the model should be where the data structures are stored (business logic). So is the library a place to write application logic, in addition to controllers? Is it a good idea to combine models in libraries?
For example, I am going to write a member management system that will have profiles and messaging. What should the MVC + L (library) setup look like? 2 models (profile, message) and a library that combines them? A library for each object? No libraries, just models and controllers?
Libraries in CodeIgniter are simply PHP classes. Anytime that you would normally write a PHP class, in CodeIgniter you would write a ‘Library.’
For the most part, data wrangling such database calls or massive data manipulations should go in a Model. Obviously HTML with small amounts of PHP go in Views, and user interaction belongs in the controller.
You would probably want an Authentication library, which would be a PHP class. However, there are several open source libraries available such as Tank Auth and DX Auth that you can look at.
Rule of thumb: A traditional PHP library is usually a bunch of related functions, such as date functions, but in CodeIgniter would be a helper. A traditional PHP class/object would be a CodeIgnter library.
Never be afraid to read the source code in the
system/helpersandsystem/librariesfolders