deetoo/essentials
Composer 安装命令:
composer require deetoo/essentials
包简介
Essentials By Jordan Dobrev
关键字:
README 文档
README
DeeToo Essentials provides tools that enhances your Laravel experience.
Models
The DeeToo Model provides an extra layer of validation to protect you against yourself. If validates the data before you save it to the database and verifies if a relation actually exists. It also provides nice additional features like read only properties and value objects.
<?php use DeeToo\Essentials\Laravel\Eloquent\Model; use DeeToo\Essentials\Laravel\Eloquent\Types\ArrayType; use DeeToo\Essentials\Laravel\Eloquent\Types\BooleanType; use DeeToo\Essentials\Laravel\Eloquent\Types\DateTimeType; use DeeToo\Essentials\Laravel\Eloquent\Types\DateType; use DeeToo\Essentials\Laravel\Eloquent\Types\EmailType; use DeeToo\Essentials\Laravel\Eloquent\Types\EnumerableType; use DeeToo\Essentials\Laravel\Eloquent\Types\FloatType; use DeeToo\Essentials\Laravel\Eloquent\Types\IntegerType; use DeeToo\Essentials\Laravel\Eloquent\Types\ObjectType; use DeeToo\Essentials\Laravel\Eloquent\Types\RelationType; use DeeToo\Essentials\Laravel\Eloquent\Types\StringType; use DeeToo\Essentials\Laravel\Eloquent\Types\TextType; use DeeToo\Essentials\Laravel\Eloquent\Types\UrlType; use DeeToo\Essentials\Laravel\Eloquent\Types\ValueObjectType; use DeeToo\Essentials\ValueObjects\Country; use DeeToo\Essentials\ValueObjects\Currency; use DeeToo\Essentials\ValueObjects\Temperature; class TestModel extends Model { protected $readOnly = ['read_only']; public function types(): array { return [ 'integer' => new IntegerType(), 'float' => new FloatType(), 'string' => new StringType(), 'boolean' => new BooleanType(), 'datetime' => new DateTimeType(), 'date' => new DateType(), 'email' => new EmailType(), 'enumerable' => new EnumerableType(['one', 'two']), 'array' => new ArrayType(), 'object' => new ObjectType(), 'relation_id' => new RelationType(self::class), 'text' => new TextType(), 'url' => new UrlType(), 'country' => new ValueObjectType(Country::class), 'vo' => new ValueObjectType(Currency::class), 'temp' => new ValueObjectType(Temperature::class), 'read_only' => new StringType(), ]; } }
Each type can be set as nullable and have a default value:
(new IntegerType()) ->nullable() ->default(1)
Each different type can have his own options on top:
(new IntegerType()) ->nullable() ->default(1) ->unsigned() ->max(100)
You can extend and create new value object as well:
<?php use DeeToo\Essentials\Exceptions\Error; class Humidity extends ValueObject { public array $serialize = [ 'formatted', ]; public function __construct($value) { parent::__construct(intval($value)); if (!is_numeric($this->value)) { throw new Error('Invalid percentage value :value', ['value' => $this->value]); } if ($this->value > 10000) { throw new Error('Percentage value :value cannot be more than 10000', ['value' => $this->value]); } if ($this->value < 0) { throw new Error('Percentage value :value cannot be more negative', ['value' => $this->value]); } } public function formatted(): string { return format()->percent($this->value); } }
Where the serialize array is the list of values that will be serialized when the Model is converted to Array/Json.
You can also create your own types:
<?php use DeeToo\Essentials\Exceptions\Error; /** * Class EmailType */ class EmailType extends Type { public function validate($value) { if (filter_var($value, FILTER_VALIDATE_EMAIL) === false) { throw new Error('must be a valid email address'); } } }
You can add options that you can chain. All you need is to validate them accordingly in the validate method.
Filters
The DeeToo Filters and easy way to provide human readable api filters your Eloquent Models.
<?php use DeeToo\Essentials\Laravel\Eloquent\Model; use DeeToo\Essentials\Laravel\Eloquent\Traits\Filterable; use DeeToo\Essentials\Laravel\Eloquent\Types\StringType; use DeeToo\Essentials\Laravel\Filters\Filters\Search; class FilterableModel extends Model { use Filterable; protected $readOnly = ['read_only']; public function types(): array { return [ 'name' => new StringType(), ]; } public function filters(): array { return [ 'search' => new Search(['name']), ]; } } ## USAGE $model = new FilterableModel(); $model->apply(['search' => 'search_string_to_fetch_records']);
You can use any of the predefined filters or create your own by implementing the FilterContract
| Filter | Description |
|---|---|
| Equals | A field is equal to a value |
| InArray | A field is equal to any value in an array |
| NotEquals | A field is not equal to a value |
| NotInArray | A field is not equal to any value in an array |
| Search | A list of fields starts with a value :value% |
deetoo/essentials 适用场景与选型建议
deetoo/essentials 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 157 次下载、GitHub Stars 达 0, 最近一次更新时间为 2018 年 04 月 13 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「sdk」 「laravel」 「essentials」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 deetoo/essentials 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 deetoo/essentials 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 deetoo/essentials 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Alfabank REST API integration
Zero-dependency raw PHP DNS resolver, domain-ownership verification, and intoDNS/MxToolbox-style diagnostics. Queries authoritative nameservers directly over sockets — never trusts the recursive cache for ownership checks.
Laravel package for Accurate Online API integration.
A lightweight plain-PHP framework for database-backed CRUD APIs.
bughq error tracking - PHP SDK
Shared RCX Laravel DataTables UI and configuration helpers.
统计信息
- 总下载量: 157
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-04-13