kekke88/phpdantic
最新稳定版本:v1.0.0
Composer 安装命令:
composer require kekke88/phpdantic
包简介
Data validation using PHP type hints.
README 文档
README
Data validation using PHP type hints.
Installation
Composer
Inside your project enter the following;
composer require kekke88/phpdantic
Introduction
Have you ever seen code such as;
...
$json = $client->request('GET', '/user/1');
$user = json_decode($json);
if(!isset($user->name) || !is_string($user->name)) {
die("Name does not exist");
}
...
Where you'd have to go the API docs back and forth and guess what the user object contains? This library intends to solve this the easy way, by using validation against a data model and assigning values to the model so that you can use your IDE´s features for your objects.
Example
<?php
declare(strict_types=1);
namespace Kekke\Catfact;
require_once('vendor/autoload.php');
use Kekke88\Phpdantic\BaseModel;
use GuzzleHttp\Client;
use Kekke88\Phpdantic\Exceptions\PhpdanticException;
class Catfact extends BaseModel
{
public string $fact;
public int $length;
}
$client = new Client([
'base_uri' => 'https://catfact.ninja/',
'timeout' => 2.0,
]);
$response = $client->request('GET', 'fact');
try {
$fact = new Catfact(json_decode((string) $response->getBody(), true));
} catch (PhpdanticException $e) {
echo $e->getMessage();
}
var_dump($fact);
Validator example
<?php
declare(strict_types=1);
namespace Kekke\Catfact;
require_once('vendor/autoload.php');
use Kekke88\Phpdantic\BaseModel;
use GuzzleHttp\Client;
use Kekke88\Phpdantic\Exceptions\PhpdanticException;
class Catfact extends BaseModel
{
public string $fact;
public int $length;
public array $phpdanticValidators = [
'length' => 'validateLength',
];
public function validateLength(int $length): bool
{
if($length < 60) {
return false;
}
return true;
}
}
$client = new Client([
'base_uri' => 'https://catfact.ninja/',
'timeout' => 2.0,
]);
$response = $client->request('GET', 'fact');
try {
$fact = new Catfact(json_decode((string) $response->getBody(), true));
} catch (PhpdanticException $e) {
echo $e->getMessage(); // Validation method validateLength failed at property length
}
Work in progress
- Collections
- Functions to validate against objects and/or json directly
Contributing
Contributions are welcome, open a PR if you want to contribute.
Issues
Please open an issue if you find something that does not work as expected
统计信息
- 总下载量: 3
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Apache-2.0
- 更新时间: 2023-11-19