- 
                Notifications
    
You must be signed in to change notification settings  - Fork 7.6k
 
PEAR integration
This is a tutorial how to integrate PEAR into Codeigniter by Fabian Wesner (german specialist for codeigniter )
PEAR is short for "PHP Extension and Application Repository" and is pronounced just like the fruit. The purpose of PEAR is to provide:
- A structured library of open-source code for PHP users
 
- A system for code distribution and package maintenance
 
- A standard style for code written in PHP, specified here
 
- The PHP Extension Community Library (PECL), see more below
 
- A web site, mailing lists and download mirrors to support the PHP/PEAR community
 
PEAR is a community-driven project governed by its developers. PEAR's governing bodies are subdivided into the PEAR Group, Collectives, and a President. PEAR's constitution (adopted in March 2007) defining these groups is documented here. The PEAR project was founded in 1999 by Stig S. Bakken and quite a lot of people have joined the project. http://pear.php.net
1. Preparation To use some of PEARs Libraries in Codeigniter you need to create a new folder.
system/application/pearYou must copy the PEAR.php to this directory.
system/application/pear/PEAR.phpThen you copy some more PEAR-Directories and Classes. Pay attention to dependencies! Example:
system/application/pear/HTTP/Request.php
system/application/pear/Net/Socket.php
system/application/pear/Net/URL.php2. Enable Hooks Note: the purpose of the hook is to set the include path to include the path to PEAR. As an alternative to a hook, you could put the same ini_set() function in your config.php file or the main CI index.php file.
You need to enable hooks inside the config.php:
$config['enable_hooks'] = TRUE;Open hooks.php and add a hook:
$hook['pre_controller'][] = array(
  'class' => 'Pear_hook',
  'function' => 'index',
  'filename' => 'pear_hook.php',
  'filepath' => 'hooks'
);Then create a new file called pear_hook.php:
system/application/hooks/pear_hook.php<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Pear_hook{
  function index(){
  // OS independent
  ini_set('include_path',ini_get('include_path').PATH_SEPARATOR.BASEPATH.'application/pear/');
  // on Apache
  // ini_set('include_path',ini_get('include_path').':'.BASEPATH.'application/pear/');
  // on Windows
  // ini_set('include_path',ini_get('include_path').';'.BASEPATH.'application/pear/');
  }
}
?>3. Use It! create a library called PearLoader.
system/application/libraries/Pearloader.phpPearloader.php:
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Pearloader{
  function load($package, $class, $options = null){
        require_once($package.'/'.$class.'.php');
        $classname = $package."_".$class;
        if(is_null($options)){
            return new $classname();
        }
        elseif (is_array($options)) {
            $reflector = new ReflectionClass($classname);
            return $reflector->newInstanceArgs($options);
        }
        else {
            return new $classname($options);
        }
    }
}
?>Thats it!
You can use the Pearloader in a codeigniter style. Load the Library and call $this->pearloader->load('Packagename','Classname');
The example performes a HTTP_REQUEST to yahoo:
function example(){
 $url = 'http://www.yahoo.com';
 $this->load->library('pearloader');
 $http_request = $this->pearloader->load('HTTP','Request');
 $http_request->setURL($url);
 $http_request->sendRequest();
 echo $http_request->getResponseBody();
}Thanks to 4webby.com