2014-06-24 74 views
7

我正在使用PHP的請求庫(http://requests.ryanmccue.info/)。Codeigniter中的PHP請求庫

我安裝的作曲家和加入composer.json用下列JSON配置:

{ 
    "require": { 
     "rmccue/requests": ">=1.0" 
    }, 
    "autoload": { 
    "psr-0":{"Requests" : "library/"} 
    } 
} 

所以在我的控制器我試圖運行通過圖書館的請求,我也得到:

public function index() 
     { 
Requests::register_autoloader(); 
$headers = array('Accept' => 'application/json'); 
$options = array('auth' => array('user', 'pass')); 
$request = Requests::get('https://api.github.com/gists', $headers, $options); 

var_dump($request->status_code); 
// int(200) 

var_dump($request->headers['content-type']); 
// string(31) "application/json; charset=utf-8" 

var_dump($request->body); 

} 

:第34行中的../application/controllers/test.php中未找到類'請求'

+0

你在哪裏放置composer.json? – ShaMoh

回答

4

您不應該將autoload塊添加到composer.json,包括require塊中的庫將使用該包提供的自動加載配置。

您通常使用自動加載塊來配置通過編寫器軟件包安裝的代碼的加載代碼是而不是

您還需要require作曲家自動加載的文件,如果你還沒有通過,這將需要作曲家庫中的代碼之前運行

require 'vendor/autoload.php'; 

的地方(通常是在「引導」過程)

而且,您需要運行composer install以實際安裝已配置的依賴關係。

+0

你需要'require'vendor/autoload.php';' – Edward

20

有一種簡單的方法使用請求PHPCodeigniter

你可以按照這幾個簡單的步驟。

步驟 - 1個

解壓縮爲ZIP PHP請求最新的複製庫目錄的內容{codeigniter_directory}/application/third_party/Request-{version}例如,你有PHP 1.6.0的要求,你的CI項目是/usr/sites/www/myciproject然後複製文件到/usr/sites/www/myciproject/application/third_party/Requests-1.6.0

步驟 - 2

{codeigniter_directory}/application/libraries與此內容創建一個文件PHPRequests.php

<?php 
if (!defined('BASEPATH')) exit('No direct script access allowed'); 

require_once APPPATH."/third_party/Requests-1.6.0/Requests.php"; 
class PHPRequests { 
    public function __construct() { 
     Requests::register_autoloader(); 
    } 
} 

步驟 - 3

在你的控制器,你可以使用裝載PHPRequests庫,我們請求在上一步中創建。

$this->load->library('PHPRequests'); 

像這樣的測試功能

public function test() 
{ 
    $this->load->library('PHPRequests'); 
    $response = Requests::get('https://github.com/timeline.json'); 
    var_dump($response->body); 
} 

希望這會有所幫助。

+3

感謝您的一步一步的幫助。它的工作原理:) – jagad89

+1

非常有用。謝謝! –

+1

感謝您的詳細解答。所選答案對我來說沒有多大用處。 –

0

HTTPFUL是我經歷了幾種http機制(我自己的一些:)後最好的庫),我發現這個是非常有用的。 http://phphttpclient.com/

,它包括

Readable HTTP Method Support (GET, PUT, POST, DELETE, HEAD, and OPTIONS) 
Custom Headers 
Automatic "Smart" Parsing 
Automatic Payload Serialization 
Basic Auth 
Client Side Certificate Auth 
Request "Templates" 
0

我只是Gopkumar Gopalan添加一些指向一個寫得很好的答案,使其在笨3.x的工作

步驟1

添加請求庫在composer.json

步驟2

安裝依附composer install

步驟3

與此內容創建{codeigniter_directory}/application/libraries文件PHPRequests.php(注有在請求庫的路徑變化)

<?php 
if (!defined('BASEPATH')) exit('No direct script access allowed'); 

require_once FCPATH."vendor/rmccue/requests/library/Requests.php"; 
class PHPRequests { 
    public function __construct() { 
     Requests::register_autoloader(); 
    } 
} 

步驟4

在你的控制器,你可以使用裝載PHPRequests請求我們在前面的步驟中創建的庫。

$this->load->library('PHPRequests'); 

像這樣的測試功能

public function test() 
{ 
    $this->load->library('PHPRequests'); 
    $response = Requests::get('https://github.com/timeline.json'); 
    var_dump($response->body); 
} 

希望它可以幫助別人