DannyBen/php-quandl

View on GitHub
README.md

Summary

Maintainability
Test Coverage
PHP Quandl
==========

[![Latest Stable Version](https://poser.pugx.org/dannyben/php-quandl/v/stable)](https://packagist.org/packages/dannyben/php-quandl)
[![Build Status](https://travis-ci.com/DannyBen/php-quandl.svg?branch=master)](https://travis-ci.com/DannyBen/php-quandl)
[![Maintainability](https://api.codeclimate.com/v1/badges/3fcbce3c55d20f908c8e/maintainability)](https://codeclimate.com/github/DannyBen/php-quandl/maintainability)

---

This library provides easy access to the [Quandl API][1] using PHP.

It provides several convenience methods to common Quandl API endpoints, as
well as a generic method to access any of Quandl's endpoints directly.


---

Geting Started
--------------

Include the `Quandl.php` class in your code, and run one of the examples. 

To install with composer:

```sh
$ composer require dannyben/php-quandl
```

Examples
--------

This is a basic call. It will return a PHP object with price
data for AAPL:

```php
$api_key = "YOUR_KEY_HERE";
$quandl = new Quandl($api_key);
$data = $quandl->getSymbol("WIKI/AAPL");
```

You may pass any parameter that is mentioned in the Quandl
documentation:

```php
$quandl = new Quandl($api_key);
$data = $quandl->getSymbol($symbol, [
    "sort_order"      => "desc",
    "rows"            => 10,
    "column_index"    => 4, 
]);
```

The date range options get a special treatment. You may use
any date string that PHP's `strtotime()` understands.

```php
$quandl = new Quandl($api_key, "csv");
$data = $quandl->getSymbol($symbol, [
    "trim_start" => "today-30 days",
    "trim_end"   => "today",
]);
```

You can also search the entire Quandl database and get a list of
supported symbols in a data source:

```php
$quandl = new Quandl($api_key);
$data = $quandl->getSearch("crude oil");
$data = $quandl->getList("WIKI", 1, 10);
```

To access any Quandl API endpoint directly, use the `get` method

```php
$quandl = new Quandl($api_key);
$data = $quandl->get("databases/WIKI");
```

More examples can be found in the [examples.php](https://github.com/DannyBen/php-quandl/blob/master/examples.php) file 

Caching
-------

You may provide the `quandl` object with a cache handler function.
This function should be responsible for both reading from your cache and storing to it. 

See the [example_cache.php](https://github.com/DannyBen/php-quandl/blob/master/example_cache.php) file.


Reference
---------

### Constructor

The constructor accepts two optional parameters: `$api_key` and `$format`:

```php
$quandl = new Quandl("YOUR KEY", "csv");
```

You may also set these properties later (see below);






### Public Properties


#### `$api_key`

```php
$quandl->api_key = "YOUR KEY";
```
Set your API key

#### `$format`

```php
$quandl->format = 'csv';
```

Set the output format. Can be: `csv`, `xml`, `json`, and `object` 
(which will return a php object obtained with `json_decode()`).


#### `$force_curl`

```php
$quandl->force_curl = true;
```

Force download using curl. By default, we will try to download with 
`file_get_contents` if available, and fall back to `curl` only as a last 
resort.


#### `$no_ssl_verify`

```php
$quandl->no_ssl_verify = true;
```

Disables curl SSL verification. Set to true if you get an error saying 
"SSL certificate problem".


#### `$timeout`

```php
$quandl->timeout = 60;
```

Set the timeout for the download operations.


#### `$last_url`

```php
print $quandl->last_url;
```

Holds the last API URL as requested from Quandl, for debugging.


#### `$error`

```php
print $quandl->error;
```

In case there was an error getting the data from Quandl, the request 
response will be `false` and this property will contain the error message.

#### `$was_cached`

```php
print $quandl->was_cached;
```

When using a cache handler, this property will be set to `true` if the 
response came from the cache.




### Methods

#### `get`

```php
mixed get( string $path [, array $params ] )

// Examples
$data = $quandl->get( 'datasets/EOD/QQQ' );
$data = $quandl->get( 'datasets/EOD/QQQ', ['rows' => 5] );
```

Returns an object containing the response from any of Quandl's API
endpoints. The format of the result depends on the value of 
`$quandl->format`.

The optional parameters array is an associative `key => value`
array with any of the parameters supported by Quandl.

You do not need to pass `auth_token` in the array, it will be 
automatically appended.


#### `getSymbol`

```php
mixed getSymbol( string $symbol [, array $params ] )

// Examples
$data = $quandl->getSymbol( 'WIKI/AAPL' );
$data = $quandl->getSymbol( 'WIKI/AAPL', ['rows' => 5] );
```

Returns an object containing data for a given symbol. The format
of the result depends on the value of `$quandl->format`.

The optional parameters array is an associative `key => value`
array with any of the parameters supported by Quandl.

You do not need to pass `auth_token` in the array, it will be 
automatically appended.


#### `getSearch`

```php
mixed getSearch( string $query [, int $page, int $per_page] )

// Examples
$data = $quandl->getSearch( "gold" );
$data = $quandl->getSearch( "gold", 1, 10 );
```

Returns a search result object. Number of results per page is 
limited to 300 by default.

Note that currently Quandl does not support CSV response for this 
node so if `$quandl->format` is "csv", this call will return a JSON
string instead.


#### `getList`

```php
mixed getList( string $source [, int $page, int $per_page] )

// Examples
$data = $quandl->getList( 'WIKI' );
$data = $quandl->getList( 'WIKI', 1, 10 );
```

Returns a list of symbols in a given source. Number of results per page is 
limited to 300 by default.


#### `getMeta`

```php
mixed getMeta( string $source )

// Example
$data = $quandl->getMeta( 'WIKI' );
```

Returns metadata about a symbol.


#### `getDatabases`

```php
mixed getDatabases( [int $page, int $per_page] )

// Examples
$data = $quandl->getDatabases();
$data = $quandl->getDatabases( 1, 10 );
```

Returns a list of available databases. Number of results per page is 
limited to 100 by default.


#### `getBulk`

> This feature is only supported with premium databases.

```php
boolean getBulk( string $database, string $path [, boolean $complete] )

// Examples
boolean getBulk( 'EOD', 'eod-partial.zip' );
boolean getBulk( 'EOD', 'eod-full.zip', true );
```

Downloads the entire database and saves it to a ZIP file. If `$complete` 
is true (false by default), it will download the entire database, otherwise,
it will download the last day only.



[1]: https://www.quandl.com/help/api