jfcherng/php-whitelist-fluent

Base class for data structure with restricted attributes.

2.0.0 2023-03-04 12:43 UTC

This package is auto-updated.

Last update: 2024-12-06 16:52:13 UTC


README

GitHub Workflow Status (branch) Packagist Packagist Version Project license GitHub stars Donate to this project using Paypal

Base class for data structure with restricted attributes.

Installation

# if PHP ^8.1 is used
composer require jfcherng/php-whitelist-fluent

# if PHP ^7.1.3 is used
composer require jfcherng/php-whitelist-fluent:dev-php71

# if PHP ^5.5 is used
composer require jfcherng/php-whitelist-fluent:dev-php5

Example

<?php

include __DIR__ . '/vendor/autoload.php';

use Jfcherng\Utility\WhitelistFluent;

// extend your own class with WhitelistFluent

/**
 * @property int    $code the error code
 * @property array  $data the output data
 * @property string $msg  the message
 */
class ApiResponse extends WhitelistFluent
{
    /**
     * {@inheritdoc}
     */
    protected $attributes = [
        'code' => 0,
        'msg' => '',
        'data' => [],
    ];
}

$resp = new ApiResponse();

// 2 ways to get an attribute
$resp['code'];
$resp->code;

// 3 ways to set an attribute
$resp->code(200);
$resp['code'] = 200;
$resp->code = 200;

// method chaining
$resp
    ->code(500)
    ->msg('something goes wrong')
    ->data([]);

// trying to set a nonexistent attribute would throw InvalidArgumentException
$resp->nonexistent('hello');
$resp['nonexistent'] = 'hello';
$resp->nonexistent = 'hello';

// get attributes in array form
$resp->toArray();

// get attributes in json string form
$jsonFlag = JSON_PRETTY_PRINT;
$resp->toJson($jsonFlag);
json_encode($resp, $jsonFlag);