lfbn/base-model

This is a Base Model that can be extended to define Models. It helps handling data validation, and extracting data.

1.0.5 2018-02-25 23:40 UTC

This package is not auto-updated.

Last update: 2024-04-14 02:29:41 UTC


README

This is a Base Model that can be extended to define Models. It helps handling data validation, and data conversion.

Features

  • Validation of properties. All, except the isNotEmpty, doesn't validate the data if it is empty. The following validator are available:
    • isNotEmpty
    • isNumeric
    • isInteger
    • isFloat
    • isString
    • isBoolean
    • isTrue
    • isFalse
    • isNull
    • isNotNull
    • isArray
    • isEmail
  • Model to array and JSON, preserving hidden attributes.
  • Define attributes using arrays of data.
  • Can define, when validation fails, if an exception is thrown.
  • Can define if data should be validated or not.

Installation

composer require lfbn/base-model

Examples

How to use it

Define your model extending the AbstractBaseModel, then implement a public method getValidationRules. This method should define the properties you want to validate.

Here is an example:

class User extends AbstractBaseModel
{

    /**
     * @var int
     */
    protected $id;

    /**
     * @var string
     */
    protected $name;

    /**
     * @var float
     */
    protected $height;

    /**
     * @var boolean
     */
    protected $active;

    /**
     * @return int
     */
    public function getId(): int
    {
        return $this->id;
    }

    /**
     * @param int $id
     */
    public function setId(int $id): void
    {
        $this->id = $id;
    }

    /**
     * @return string
     */
    public function getName(): string
    {
        return $this->name;
    }

    /**
     * @param string $name
     */
    public function setName(string $name): void
    {
        $this->name = $name;
    }

    /**
     * @return float
     */
    public function getHeight(): float
    {
        return $this->height;
    }

    /**
     * @param float $height
     */
    public function setHeight(float $height): void
    {
        $this->height = $height;
    }

    /**
     * @return bool
     */
    public function isActive(): bool
    {
        return $this->active;
    }

    /**
     * @param bool $active
     */
    public function setActive(bool $active): void
    {
        $this->active = $active;
    }

    /**
     * @return array
     */
    public function getValidationRules()
    {
        return [
            ['property' => 'id', 'validator' => 'isNotEmpty'],
            ['property' => 'id', 'validator' => 'isInteger'],
            ['property' => 'height', 'validator' => 'isFloat'],
            ['property' => 'active', 'validator' => 'isBoolean']
        ];
    }
}

How to know if is valid?

You need to call the validate() method

$user = new User();
$user->validate();

Can I use my own validator?

Yes. It only needs to implement the interface IValidator.

$user = new User();
$myValidator = new MyValidator();
$user->setValidator($myValidator);

Can I use my own converter?

Yes. It only needs to implement the interface IConverter.

$user = new User();
$myConverter = new MyConverter();
$user->setConverter($myConverter);

About

Requirements

  • Base Model works with PHP 7 or above.

Running Tests

You can run the tests executing the following command. Before you can run these, be sure to run composer install.

composer test

Submitting bugs and feature requests

Bugs and feature request are tracked on GitHub

License

Base Model is licensed under the MIT License - see the LICENSE file for details