CodeIgniter is a super cool web application framework for PHP. It is lightweight and lets you get the jobs done in a fashion. It is the first framework I have used and I am still using it. On the other hand, Zend Framework is from Zend, the PHP company. I appreciate the huge library and the full stack nature. I respect the fact that ZF is from the people who maintain PHP. But honestly, I don’t find it feasible for medium and small projects.
One of the brighter aspects of the Zend Framework is that it has many cool libraries. The framework itself is loosely tied and the components are available as stand alone. We can take this opportunity to integrate the powerful library of the Zend Framework into the beautiful CodeIgniter making ourselves more productive than before. Specially, we can relieve ourselves from writing and maintaining wrappers to different APIs.
Ok then, let’s see how do we integrate the Zend Framework libraries into CI.
1) Setup CodeIgniter.
2) Download the Zend Framework. Extract the archive.
3) From the ZF files, copy the “Zend” directory from inside the “library” directory.
4) Paste the directory into the “system/application/libraries” directory. So ultimately, the new location of the copied “Zend” directory would be “system/application/libraries/Zend”. If you’re on Linux/Unix, we need to deal with file permission. Make the Zend directory accessible by all. I don’t think I need to tell you how to do that with chmod, do I ? 😉
5) In the same “system/application/libraries/” directory, create a new file named “Zend.php” and put the following contents:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
<?php if (!defined('BASEPATH')) {exit('No direct script access allowed');} class Zend { function __construct() { ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . APPPATH . 'libraries'); } function load($class) { require_once (string) $class . EXT; } } ?> |
🙂 We are done. That completes the integration. Now we can load any Zend component inside our controllers. Let’s make our hands dirty by modifying the default welcome controller. Open the “system/application/controllers/welcome.php” and put the following contents:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
<?php class Welcome extends Controller { function Welcome() { parent::Controller(); } function index() { $this->load->library('zend'); $this->zend->load('Zend/Service/Flickr'); $flickr = new Zend_Service_Flickr('12e99caebb8f305fff5a943606ecde18'); $results = $flickr->tagSearch('worldcup'); foreach ($results as $result) { $photo = $result->Small; echo "<a href=\"{$photo->clickUri}\"><img src=\"{$photo->uri}\" /></a><br /><br />"; } } } ?> |
If you read the codes above, you already know what it does 🙂 If everything goes right, you’ll see a bunch of Flickr photos with the “worldcup” tag. Clicking on a photo will take you to the Flickr page of that photo.
Now, what we have seen is pretty straightforward. We don’t use any hooks or don’t go for any complexity. We simply put the Zend library in the application library. Then we write a loader class that loads Zend libraries. When we construct this “Zend Loader” object, it adds the Zend library directory to the include path. Then when we use the load() method of the object, it imports the library and adds the functionalities to the current scope 🙂
Click on the following to know how you can access pdf files anywhere without transferring them – sodapdf.com.
Enjoy the Zend Services with the cool CodeIgniter framework! Have fun 😀