2017 © Pedro Peláez
 

library restforcephp

PHP Salesforce REST

image

eventfarm/restforcephp

PHP Salesforce REST

  • Thursday, October 19, 2017
  • by eventfarm
  • Repository
  • 3 Watchers
  • 6 Stars
  • 5,528 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 1 Open issues
  • 27 Versions
  • 17 % Grown

The README.md

Restforce PHP

Travis Downloads Packagist, (*1)

This is meant to emulate what the ejhomes/restforce gem is doing for rails., (*2)

Installation

This library requires PHP 7.1 or later; we recommend using the latest available version of PHP. It has been test through the latest version of PHP (v8.3 as of this writing), (*3)

$ composer require eventfarm/restforcephp

Or., (*4)

Add the following lines to your composer.json file., (*5)

{
    "require": {
        "eventfarm/restforcephp": "^2.0.0"
    }
}
$ composer install

Project Defaults

<?php
namespace App;

use EventFarm\Restforce\Rest\OAuthAccessToken;
use EventFarm\Restforce\Restforce;
use EventFarm\Restforce\RestforceInterface;

class DemoSalesforceApi
{
    /** @var null|RestforceInterface $restforce */
    private $restforce;

    public function getRestforceClient(): RestforceInterface
    {
        if ($this->restforce === null) {
            // You need either the OAuthAccessToken
            // or the Username & Password,
            // the other(s) can be null.
            $this->restforce = new Restforce(
                getenv('SF_CLIENT_ID'),
                getenv('SF_CLIENT_SECRET'),
                new OAuthAccessToken(...),
                getenv('SF_USERNAME'),
                getenv('SF_PASSWORD')
            );
        }
        return $this->restforce;
    }
}

Access Token Information

OAuth Scopes

Consult the Salesforce OAuth 2.0 Documentation to find out what Available OAuth Scopes your app needs., (*6)

Salesforce Documentation

Links to Salesforce documentation pages can be found in each section. Alternatively, here is the holy grail of the Saleforce endpoints., (*7)

Usage

Limits

Docs Returns a list of daily API limits for the salesforce api. Refer to the docs for the full list of options., (*8)

public function limits(): \Psr\Http\Message\ResponseInterface, (*9)

<?php
/** @var \EventFarm\Restforce\RestforceInterface $restforce */
$restforce = (new DemoSalesforceApi())->getClient();
/** @var \Psr\Http\Message\ResponseInterface $responseInterface */
$responseInterface = $restforce->limits();

UserInfo

Docs Get info about the logged-in user., (*10)

public function limits(): \Psr\Http\Message\ResponseInterface, (*11)

<?php
/** @var \EventFarm\Restforce\RestforceInterface $restforce */
$restforce = (new DemoSalesforceApi())->getClient();
/** @var \Psr\Http\Message\ResponseInterface $responseInterface */
$responseInterface = $restforce->userInfo();

Query

Docs Use the Query resource to execute a SOQL query that returns all the results in a single response., (*12)

public function query(string $query): \Psr\Http\Message\ResponseInterface, (*13)

<?php
/** @var \EventFarm\Restforce\RestforceInterface $restforce */
$restforce = (new DemoSalesforceApi())->getClient();
/** @var \Psr\Http\Message\ResponseInterface $responseInterface */
$responseInterface = $restforce->query('SELECT Id, Name FROM Account');

Find

Docs Find resource $id of $sobject, optionally specify the fields you want to retrieve in the fields parameter and use the GET method of the resource., (*14)

public function find(string $sobject, string $id, array $fields = []): \Psr\Http\Message\ResponseInterface, (*15)

<?php
/** @var \EventFarm\Restforce\RestforceInterface $restforce */
$restforce = (new DemoSalesforceApi())->getClient();
/** @var \Psr\Http\Message\ResponseInterface $responseInterface */
$responseInterface= $restforce->find('Account', '001410000056Kf0AAE');

Describe

Docs Completely describes the individual metadata at all levels for the specified object., (*16)

public function describe(string $sobject): \Psr\Http\Message\ResponseInterface, (*17)

<?php
/** @var \EventFarm\Restforce\RestforceInterface $restforce */
$restforce = (new DemoSalesforceApi())->getClient();
/** @var \Psr\Http\Message\ResponseInterface $responseInterface */
$responseInterface = $restforce->describe('Account');

Create

Docs Create new records of $sobject. The response body will contain the ID of the created record if the call is successful., (*18)

public function create(string $sobject, array $data): \Psr\Http\Message\ResponseInterface, (*19)

<?php
/** @var \EventFarm\Restforce\RestforceInterface $restforce */
$restforce = (new DemoSalesforceApi())->getClient();
/** @var \Psr\Http\Message\ResponseInterface $responseInterface */
$responseInterface = $restforce->create('Account', [
    'Name' => 'Foo Bar'
]);

Update

Docs You use the SObject Rows resource to update records. The response will be the a bool of $success., (*20)

public function update(string $sobject, string $id, array $data):bool, (*21)

<?php
/** @var \EventFarm\Restforce\RestforceInterface $restforce */
$restforce = (new DemoSalesforceApi())->getClient();
/** @var \Psr\Http\Message\ResponseInterface $responseInterface */
$responseInterface = $restforce->update('Account', '001i000001ysdBGAAY', [
    'Name' => 'Foo Bar Two'
]);

Contributing

Thanks for considering contributing to our Restforcephp project. Just a few things:, (*22)

  • Make sure your commit conforms to the PSR-2 coding standard.
  • Make sure your commit messages are well defined.
  • Make sure you have added the necessary unit tests for your changes.
  • Run all the tests to assure nothing else was accidentally broken.
  • Submit a pull request.

Unit Tests:

$ vendor/bin/phpunit
With Code Coverage:
$ vendor/bin/phpunit --coverage-text --coverage-html coverage_report

Check PHP-CS PSR2 Test:

$ vendor/bin/phpcs -p --standard=PSR2 src/ tests/

Apply PHP-CS PSR2 Fix:

Auto runs and resolves some low hanging PSR2 fixes, this might not get all of them, so rerun the check after., (*23)

$ vendor/bin/phpcbf --standard=PSR2 src/ tests/

Check Compatability for PHP Version:

$ vendor/bin/phpcs -p ./src/ --standard=PHPCompatibility --runtime-set testVersion 7.1-8.4

The Versions

19/10 2017