A PHP client library for easily accessing Ruby on Rails-based REST services
Pull request Compare This branch is 13 commits behind jbroadway:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
tests
ActiveResource.php
README.textile
composer.json

README.textile

PHP ActiveResource

Click here to lend your support to: phpactiveresource and make a donation at www.pledgie.com !

This is a basic PHP class for accessing Ruby on Rails REST APIs in an ActiveResource style of coding. The benefit is easier use of RoR-based REST services without having to roll your own CURL-based client each time. Hopefully this class saves a few people some time coding in PHP against RoR-based REST services. It’s by no means an exhaustive port, and some methods are missing, but it does try to cover all the basics.

Note: You will need the php curl extension installed on your system. On Ubuntu, you can install them with:

sudo apt-get install php5-curl

Usage

<?php

require_once ('ActiveResource.php');

class Song extends ActiveResource {
    var $site = 'http://localhost:3000/';
    var $element_name = 'songs';
}

// create a new item
$song = new Song (array ('artist' => 'Joe Cocker', 'title' => 'A Little Help From My Friends'));
$song->save ();

// fetch and update an item, chaining statements
$song->find (44)->set ('title', 'The River')->save ();

// fetch and update, line by line
$song->find (44);
$song->title = 'The River';
$song->save ();

// get all songs
$songs = $song->find ('all');

// delete a song
$song->find (44);
$song->destroy ();

// custom method
$songs = $song->get ('by_year', array ('year' => 1999));

?>

Extra URL params

If you want to add extra params to the end of the url eg: an API key, you can set $extra_params

<?php

require_once ('ActiveResource.php');

class Song extends ActiveResource {
    var $site = 'http://localhost:3000/';
    var $element_name = 'songs';
    var $extra_params = '?key=123456789';
}

Extra Http Headers

If you need to add extra http request headers you can set $request_headers

<?php

require_once ('ActiveResource.php');

class Song extends ActiveResource {
    var $site = 'http://localhost:3000/';
    var $element_name = 'songs';
    var $request_headers = array("x-api-key: some-api-key-here");
}