1. Go to this page and download the library: Download aaronbullard/dogpile library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
aaronbullard / dogpile example snippets
// Example contoller method for GET /posts/1?sonResponse
{
$postId = $httpRequest->get('postId');
$stRepo->find($postId);
// Example of using Dogpile\ResourceManager::class
$nt to transform your model
'
namespace Dogpile\Contracts;
use Dogpile\Collections\ResourceCollection;
interface ResourceQuery
{
/**
* Returns the type of Resource Objects
*
* @return void
*/
public function resourceType(): string;
/**
* Queries the resource based on the ids provided
*
* Must return an array of objects implementing the ResourceObject interface
*
* @param array $ids
* @return array
* @throws NotFoundException
*/
public function findHavingIds(array $ids): ResourceCollection;
}
// some bootstrap file
use Dogpile\ResourceManager;
$conn = $app['database_connection'];
$app[ResouceManager::class] = new ResourceManager(
new AuthorsResourceQuery($conn),
new CommentsResourceQuery($conn)
);
namespace Dogpile\Contracts;
use Dogpile\Collections\RelationshipCollection;
interface Resource
{
/**
* Resource type
*
* @return string
*/
public function type(): string;
/**
* Resource id
*
* @return string
*/
public function id(): string;
/**
* Returns an array of ResourceIdentifiers
*
* @return RelationshipCollection
*/
public function relationships(): RelationshipCollection;
}
// Example data
$jsonapiData = [
'type' => 'posts',
'id' => '42',
'attributes' => [
'title' => 'Bridge of Death',
'body' => 'What is the airspeed velocity of an unladed swallow?'
],
'relationships' => [
'author' => [
'data' => ['type' => 'people', 'id' => '24']
],
'comments' => [
'data' => [
['type' => 'comments', 'id' => '1'],
['type' => 'comments', 'id' => '2'],
['type' => 'comments', 'id' => '3']
]
]
]
]
// Example model
use Dogpile\ResourceIdentifier;
use Dogpile\Contracts\Resource;
use Dogpile\Collections\RelationshipCollection;
class SomeObjectModel implements Resource
{
protected $jsonapiData = [];
public function __construct(array $jsonapiData)
{
$this->jsonapiData = $jsonapiData;
}
public function type(): string
{
return $this->jsonapiData['type'];
}
public function id(): string
{
return $this->jsonapiData['id'];
}
public function relationships(): RelationshipCollection
{
$collection = new RelationshipCollection();
// add author
$authorIdent = $this->jsonapiData['relationships']['author']['data'];
$collection->addRelationships('author', ResourceIdentifier::create($authorIdent['type'], $authorIdent['id']));
// add comments
$commentIdentifiers = array_map(function($comment){
return ResourceIdentifier::create($comment['type'], $comment['id']);
}, $this->jsonapiData['relationships']['comments']['data']);
$collection->addRelationships('comments', ...$commentIdentifiers);
return $collection;
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.