PHP code example of nahid / presento
1. Go to this page and download the library: Download nahid/presento 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/ */
nahid / presento example snippets
$response = [
"id" => 123456,
"name" => "Nahid Bin Azhar",
"email" => "[email protected] ",
"type" => 1,
"is_active" => 1,
"created_at" => "2018-01-02 02:03:04",
"updated_at" => "2018-01-02 02:03:04",
"deleted_at" => "2018-01-02 02:03:04",
"projects" => [
[
"id" => 1,
"name" => "Laravel Talk",
"url" => "https://github.com/nahid/talk",
"license" => "CC0",
"created_at" => "2016-02-02 02:03:04"
],
[
"id" => 2,
"name" => "JsonQ",
"url" => "https://github.com/nahid/jsonq",
"license" => "MIT",
"created_at" => "2018-01-02 02:03:04"
]
]
];
// UserPresenter.php
class UserPresenter extends \Nahid\Presento\Presenter
{
public function present() : array
{
return [
'id',
'name',
'email',
'type',
'is_active',
'projects',
];
}
}
$user = new UserPresenter($response);
dump($user->get());
[
"id" => 123456,
"name" => "Nahid Bin Azhar",
"email" => "[email protected] ",
"type" => 1,
"is_active" => 1,
"projects" => [
[
"id" => 1,
"name" => "Laravel Talk",
"url" => "https://github.com/nahid/talk",
"license" => "CC0",
"created_at" => "2016-02-02 02:03:04"
],
[
"id" => 2,
"name" => "JsonQ",
"url" => "https://github.com/nahid/jsonq",
"license" => "MIT",
"created_at" => "2018-01-02 02:03:04"
]
]
]
// UserPresenter.php
class UserPresenter extends \Nahid\Presento\Presenter
{
public function present() : array
{
return [
'user_id' => 'id',
'name',
'email',
'type',
'is_active',
];
}
}
[
"user_id" => 123456,
"name" => "Nahid Bin Azhar",
"email" => "[email protected] ",
"type" => 1,
"is_active" => 1,
]
// UserPresenter.php
class UserPresenter extends \Nahid\Presento\Presenter
{
public function present() : array
{
return [
'id',
'name',
'email',
'type',
'is_active',
'top_package' => 'projects.0.name',
'projects',
];
}
}
[
"id" => 123456,
"name" => "Nahid Bin Azhar",
"email" => "[email protected] ",
"type" => 1,
"is_active" => 1,
"top_package" => "Laravel Talk",
"projects" => [
[
"id" => 1,
"name" => "Laravel Talk",
"url" => "https://github.com/nahid/talk",
"license" => "CC0",
"created_at" => "2016-02-02 02:03:04"
],
[
"id" => 2,
"name" => "JsonQ",
"url" => "https://github.com/nahid/jsonq",
"license" => "MIT",
"created_at" => "2018-01-02 02:03:04"
]
]
]
// UserPresenter.php
class UserPresenter extends \Nahid\Presento\Presenter
{
public function present() : array
{
return [
'user_id' => 'id',
'name',
'email',
'type',
'is_active',
];
}
}
// UserTransformer.php
class UserTransformer extends \Nahid\Presento\Transformer
{
public function getUserIdProperty($value)
{
return md5($value);
}
}
// UserPresenter.php
public function transformer()
{
return UserTransformer::class;
}
[
"user_id" => "e10adc3949ba59abbe56e057f20f883e",
"name" => "Nahid Bin Azhar",
"email" => "[email protected] ",
"type" => 1,
"is_active" => 1,
]
// ProjectPresenter.php
class ProjectPresenter extends \Nahid\Presento\Presenter
{
public function present() : array
{
return [
'id',
'name',
'url',
'license',
'created_at',
];
}
public function transformer()
{
return ProjectTransformer::class;
}
}
// UserPresenter.php
public function present() : array
{
return [
'user_id' => 'id',
'name',
'email',
'type',
'is_active',
'projects' => [ProjectPresenter::class => ['projects']],
];
}
// UserPresenter.php
public function convert($data)
{
if ($data instanceof Model) {
return $data->toArray();
}
return $data;
}