8/8/2019 EdFinkler-Introduction to CodeIgniter
1/20
Introduction to CodeIgniterEd Finkler
[email protected] funkatron.com
20070914
1
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
2/20
Ed Finkler
What is CodeIgniter?
YAPF(Yet Another PHP Framework)
2
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
3/20
Ed Finkler
Why care about CI?
Battle-tested Fast
Adaptable
3
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
4/20
Ed Finkler
Notable CI features
Fast
Compatible with many environments Quick to set-up Plays well with others Focus on simple solutions Good docs & community
4
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
5/20
Ed Finkler
CI structure
5
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
6/20
Ed Finkler
CI structure
6
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
7/20
Ed Finkler
URL structuredomain.com/controller_class/method/data
7
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
8/20
Ed Finkler
MVC pattern
Controller Classes private methods prexed with _
8
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
9/20
Ed Finkler
MVC pattern
Views
Plain PHP as templating lang
9
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
10/20
Ed Finkler
MVC pattern
Views
Optional template markup
10
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
11/20
Ed Finkler
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' ));
11
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
12/20
Ed Finkler
Helpers
Procedural funcs, grouped by le
Mostly for views; available in controllers
12
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
13/20
Ed Finkler
Plugins
Single procedural function
More extensive functionality than helper
13
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
14/20
Ed Finkler
Loading on-demand
$this->load-> library|view|helper|plugin|...(name);
Auto-loading set in cong/autoload.php
14
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
15/20
Ed Finkler
CI security
Not Foolproof (nothing is!) Limits allowed chars in URI
register_globals forced off
15
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
16/20
Ed Finkler
CI security
Data only passed via POST or COOKIE GET query destroyed Array keys ltered
Auto XSS Filtering (must enable)
Query binding - use it!
16
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
17/20
Ed Finkler
Extending CI
The CI Way Creating your own libs Extend native libs (MY_Email)
As-is, cant extend/replace controller ordatabase classes
Replacing native libs Hooks
17
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
18/20
Ed Finkler
Extending CI
The however the hell you want to do itway Just require your libs
Collisions unlikely (not impossible)
18
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
19/20
Ed Finkler
Example App
CI + Simplepie + Zend_Json == Web2.0 prot
19
mailto:[email protected]:[email protected]8/8/2019 EdFinkler-Introduction to CodeIgniter
20/20
Ed Finkler
Danke
codeigniter.com Slides will be up at funkatron.com shortly
mailto:[email protected]:[email protected]Top Related