kekke88/phpdantic 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Apache-2.0
  • 更新时间: 2023-11-19

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固