Как стать автором
Обновить

Codeigniter with PEAR

Время на прочтение3 мин
Количество просмотров1.8K

В этой статье я расскажу как подключить библиотеки PEAR в Фреймворк Codeigniter. Если PEAR установлен в системе по умолчанию и у вас есть доступ для инсталляции отдельных библиотек, то все просто. Иначе приходится подключать все ручками. Сразу приведу ссылку на источник: codeigniter.com/wiki/PEAR_integration. Ниже я перевел это руководство, в код добавил некоторые, по моему мнению, исправления.


1. Подготовка
Для использования библиотек PEAR Вам необходимо создать новую директорию.
system/application/pear
Далее скопировать PEAR.php в эту директорию
system/application/pear/PEAR.php
Затем скопировать необходимые библиотеки. Обратите внимание на зависимости библиотек.
Пример:
system/application/pear/HTTP/Request.php
system/application/pear/Net/Socket.php
system/application/pear/Net/URL.php


2. Подключаем Hooks

Заметка: Необходимо добавить путь к библиотекам PEAR в include_path. В качестве альтернативы описанного ниже способы можно вставить функцию ini_set() в Ваш config.php или в главный CI index.php файл.

Вам необходимо включить использование hooks в config.php.
$config['enable_hooks'] = TRUE;
Далее откройте hooks.php и добавьте следующий hook:
$hook['pre_controller'][] = array(
  'class' => 'Pear_hook',
  'function' => 'index',
  'filename' => 'pear_hook.php',
  'filepath' => 'hooks'
);


Затем создаем новый файл 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. Создаем класс PearLoader.

system/application/libraries/Pearloader.php:

<?php

class Pearloader {
    function load($package, $class = NULL, $options = NULL) {
    if (is_null($class)) {
        require_once $package . '.php';
        $classname = $package;
    } else {
        require_once $package . '/' . $class . '.php';
        $classname = $package . '_' . $class;
    }
    if (($count = func_num_args()) > 2) {
        $params = '';
        for ($i = 2; $i < $count; $i++) {
          eval("\$var$i = func_get_arg($i);");
          $params .= "\$var$i" . (($i + 1 == $count) ? '' : ', ');
        }
        eval("\$instance = new $classname($params);");
        return $instance;
    } else {
      return new $classname();
    }
    }
}

?>


Это все!

Вы можете использовать Pearloader в стиле Codeigniter. Вначале загружаем библиотеку и вызываем метод load:
$this->pearloader->load(’Packagename‘,’Classname‘);

Например, ниже написан запрос к 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();
}
Теги:
Хабы:
Всего голосов 16: ↑15 и ↓1+14
Комментарии18

Публикации

Истории

Ближайшие события