Professional Documents
Culture Documents
EdFinkler-Introduction To CodeIgniter
EdFinkler-Introduction To CodeIgniter
EdFinkler-Introduction To CodeIgniter
Ed Finkler
coj@funkatron.com • funkatron.com
20070914
1
What is CodeIgniter?
• YAPF
(Yet Another PHP Framework)
Ed Finkler <coj@funkatron.com>
2
Why care about CI?
• Battle-tested
• Fast
• Adaptable
Ed Finkler <coj@funkatron.com>
3
Notable CI features
• Fast
• Compatible with many environments
• Quick to set-up
• Plays well with others
• Focus on simple solutions
• Good docs & community
Ed Finkler <coj@funkatron.com>
4
CI structure
index.php
Loaded by browser
Bootstraps everything
system application
base classes & built-in app-specific classes
functionality and functionality
Ed Finkler <coj@funkatron.com>
5
CI structure
Ed Finkler <coj@funkatron.com>
6
URL structure
domain.com/controller_class/method/data
<?php
[...]
function retrieve($id)
{
$this->load->database();
[...]
}
}
?>
Ed Finkler <coj@funkatron.com>
7
MVC pattern
• Controller Classes
• private methods prefixed with “_”
Ed Finkler <coj@funkatron.com>
8
MVC pattern
• Views
• Plain PHP as templating lang
Ed Finkler <coj@funkatron.com>
9
MVC pattern
• Views
• Optional template markup
Ed Finkler <coj@funkatron.com>
10
MVC pattern
• Models
• Optional
• ActiveRecord pattern available, not required
• Query binding
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
Ed Finkler <coj@funkatron.com>
11
Helpers
• Procedural funcs, grouped by file
• Mostly for views; available in controllers
Ed Finkler <coj@funkatron.com>
12
Plugins
• Single procedural function
• More extensive functionality than helper
Ed Finkler <coj@funkatron.com>
13
Loading on-demand
• $this->load->library|view|helper|plugin|...(‘name’);
Ed Finkler <coj@funkatron.com>
14
CI security
Ed Finkler <coj@funkatron.com>
15
CI security
Ed Finkler <coj@funkatron.com>
16
Extending CI
• The CI Way
• Creating your own libs
• Extend native libs (MY_Email)
• As-is, can’t extend/replace controller or
database classes
• Replacing native libs
• Hooks
Ed Finkler <coj@funkatron.com>
17
Extending CI
Ed Finkler <coj@funkatron.com>
18
Example App
Ed Finkler <coj@funkatron.com>
19
Danke
• codeigniter.com
• Slides will be up at funkatron.com shortly
Ed Finkler <coj@funkatron.com>
20