1) You don’t need an ORM
I had experimented with Datamapper, and it was great. But there was complex join statement I needed that DM didn’t support… so I had to just write out the SQL like normal. I then realized it’s just as easy to use CI’s Active Record or regular query command and create your own methods. Plus, it keeps things pretty speedy.
2) You DO need a base Model
I’ve only just recently started using Jamie Rumbelow’s MY_Model and it’s changed everything. Previously, when I wanting to get a single record from a table, I was writing
$this->db->from('table')->where('id',$id)->limit(1)->get()->row(); for every single table. Now, that’s already included for every Model I make.
3) It’s helpful to look at the core code
For example, I was curious how the Active Record was implemented, so I opened up DB_active_rec.php. I know some people prefer to use “->get()” by adding in the table name and limit as parameters, and I wondering if there was difference in how it’s handled. Interestingly, it runs the exact same “from()” method, just as if you had “->from()” in the query.
And while this is a micro-optimization, if you want to return a single result and you’re sure it’s the first result… use “->limit(1)”. The “row()” method will work with multiple rows returned, so there’s logic built in to just return the first row. Adding “->limit(1)” will help skip all that.
4) The url helper really needs to be auto-loaded by default
In my autoload file, I always load the database and sessions libraries and the url helper. I can’t remember a project where those didn’t get used. I’ll occasionally autoload the form helper as well, but that’s a project-by-project call.
But the url helper… I honestly can’t see how anyone would ever NOT use that in every project. “site_url()” and “redirect()” just seem like no-brainers.
5) Object-Oriented programming and MVC
Prior to learning Codeigniter, I was experience in Drupal and WordPress, and a bit of Joomla, but working with them isn’t strict OO. The custom stuff I programmed was really procedural or functional, based on the fact that I learned programming using PHP 4 and classic ASP/ vbscript. While I read about and tried using Classes and methods, I just didn’t get it. With CI, I had the ‘flipped switch’ moment, where Objects and Classes made total sense.
Now, I’m onto learning as much as I can about OO in PHP 5.3, including namespaces and inheritance… which aren’t yet built into CI