1. Go to this page and download the library: Download kilylabs/phprest 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/ */
kilylabs / phprest example snippets
Phprest\Config;
use Phprest\Response;
use Phprest\Application;
use Symfony\Component\HttpFoundation\Request;
# vendor name, current API version, debug
$config = new Config('vendor.name', '0.1', true);
$app = new Application($config);
$app->get('/{version:\d\.\d}/', function (Request $request) {
return new Response\Ok('Hello World!');
});
$app->run();
use Phprest\Service\Logger\Config as LoggerConfig;
use Phprest\Service\Logger\Service as LoggerService;
use Monolog\Handler\StreamHandler;
$config = new Config('vendor.name', '0.1');
$loggerHandlers[] = new StreamHandler('path_to_the_log_file', \Monolog\Logger::DEBUG);
$config->setLoggerConfig(new LoggerConfig('phprest', $loggerHandlers));
$config->setLoggerService(new LoggerService());
$app->get('/{version:\d\.\d}/hello', function (Request $request, $version) {
# You can leave the $request and the $version variable
return new Response\Ok('Hello World!');
});
$app->get('/2.4/hello/{name:word}', function (Request $request, $name) {
return new Response\Ok('Hello ' . $name);
});
# index.php
# calls index method on HomeController class
$app->get('/{version:\d\.\d}/', '\Foo\Bar\HomeController::index');
namespace Foo\Bar;
# HomeController.php
use Symfony\Component\HttpFoundation\Request;
use Phprest\Response;
class HomeController
{
public function index(Request $request, $version)
{
return new Response\Ok('Hello World!');
}
}
$app['HomeController'] = function () {
return new \Foo\Bar\HomeController();
};
$app->get('/{version:\d\.\d}/', 'HomeController::index');
namespace Foo\Bar\Controller;
# Home.php
use Phprest\Util\Controller;
use Symfony\Component\HttpFoundation\Request;
use Phprest\Response;
use Phprest\Annotation as Phprest;
class Home extends Controller
{
/**
* @Phprest\Route(method="GET", path="/foobars/{id}", since=1.2, until=2.8)
*/
public function get(Request $request, $version, $id)
{
return new Response\Ok('Hello World!');
}
}
namespace App\Module\Controller;
class Index extends \Phprest\Util\Controller
{
public function index(Request $request)
{
# ...
}
}
namespace Foo\Entity;
use JMS\Serializer\Annotation as Serializer;
use Hateoas\Configuration\Annotation as Hateoas;
/**
* @Serializer\XmlRoot("result")
*
* @Hateoas\Relation(
* "self",
* href = @Hateoas\Route("/temperatures", parameters = {"id" = "expr(object.id)"}, absolute = false)
* )
*/
class Temperature
{
/**
* @var integer
* @Serializer\Type("integer")
*/
public $id;
/**
* @var integer
* @Serializer\Type("integer")
*/
public $value;
/**
* @var \DateTime
* @Serializer\Type("DateTime")
* @Serializer\Since("2")
* @Serializer\Exclude
*/
public $created;
/**
* @param integer $id
* @param integer $value
* @param \DateTime $created
*/
public function __construct($id = null, $value = null, \DateTime $created = null)
{
$this->id = $id;
$this->value = $value;
$this->created = $created;
}
}
$app->post('/{version:\d\.\d}/temperatures', function () use ($app, $version) {
$temperature = new \Foo\Entity\Temperature(1, 32, new \DateTime());
return new Response\Created('/temperatures/1', $temperature);
});
# ...
use JMS\Serializer\Exception\RuntimeException;
# ...
public function post(Request $request)
{
try {
/** @var \Foo\Entity\Temperature $temperature */
$temperature = $this->deserialize('\Foo\Entity\Temperature', $request);
} catch (RuntimeException $e) {
throw new Exception\UnprocessableEntity(0, [new Service\Validator\Entity\Error('', $e->getMessage())]);
}
}
# ...
# ...
use Hateoas\Representation\PaginatedRepresentation;
use Hateoas\Representation\CollectionRepresentation;
# ...
$paginatedCollection = new PaginatedRepresentation(
new CollectionRepresentation([$user1, $user2, ...]),
'/users', # route
[], # route parameters, should be $request->query->all()
1, # page, should be (int)$request->query->get('page')
10, # limit, should be (int)$request->query->get('limit')
5, # total pages
'page', # page route parameter name, optional, defaults to 'page'
'limit', # limit route parameter name, optional, defaults to 'limit'
true, # absolute URIs
47 # total number of rows
);
# ...
return new Response\Ok($paginatedCollection);
# ...
$app->get('/', function (Request $request) {
return new Response\Ok('Hello World!');
});
# ...
# ...
$app->get('/', function (Request $request) {
# ...
throw new \Phprest\Exception\BadRequest();
# ...
});
# ...
# ...
$app->get('/{version:\d\.\d}/', function (Request $request, $version) {
throw new \Phprest\Exception\Exception('Code Red!', 9, 503);
});
# ...