hradigital / php-datatypes
轻松构建和清理您的应用程序对象。
2.0.6
2022-03-27 17:12 UTC
Requires
- php: ^7.4||^8.0
Requires (Dev)
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.0@dev
README
主分支构建状态
代码用法
本包旨在为您提供一种简单的方法来完成此操作(以及更多),只需按如下方式构建您的对象
$user = new User([ 'id' => 123, 'active' => true, 'name' => ' John Doe ', ]); echo $user->getId(); // (int) 123 echo $user->isActive(); // (bool) true echo $user->getName(); // Prints ' John Doe ' echo $user->getName()->trim()->toUpper()->replace(' ', '-'); // Prints 'JOHN-DOE' echo $user->getName(); // Prints ' John Doe ' again, as Attribute is immutable.
...
class User extends AbstractValueObject { use HasPositiveIntegerIDTrait, HasActiveTrait, HasNameTrait; }
此外,开箱即用,它将允许您执行以下操作
$user = new User([ 'id' => 123, 'active' => true, 'name' => ' John Doe ', ]); echo json_encode($user); // {"id":123,"active":true,"name":"John Doe"} $serialized = serialize($user); $otherUser = unserialize($serialized); printf($otherUser->toArray()); /* [ 'id' => 123, 'active' => true, 'name' => 'John Doe', ] */
...等等。这将使您的对象从重复的状态管理代码中变得干净,从而让您能够将业务逻辑实现其中。
要了解更多关于代码的信息,请访问这里。
关于
PHP 数据类型旨在以快速、平台无关的方式轻松创建您的值对象/实体/聚合,促进以下内容
- 代码复用
- 数据标准化
- 类型提示强制执行
- 完整数据序列化
- 除了PHP本身外,没有第三方依赖。清洁/自依赖项目。
扩展AbstractValueObject的聚合/实体/值对象将使用为每个类属性预定义/测试的特质构建,使您的类定义清洁/自由,以便实现业务逻辑。
这还将允许您使用来自数据库、Web服务、事件有效负载等的数据重新使用/加载您的对象。
尽可能多地,类属性的获取器/访问器将返回值对象而不是原始类型。所有这些数据类型也将包含在该包中,因为它没有任何依赖项,除了PHP本身。
要了解如何使用此包,请参阅AbstractValueObject文档。
灵感
一些启发这个项目的项目主要包括Nikita Popov的标量对象,但也包括Martin Helmich的标量类和Michael Hall的数据类型。
由于“无第三方依赖”规则,此包将使用一些更流行的数据类型的简化版本。以下是一些示例
- synfony/string,用于字符串相关操作。
- nesbot/carbon,用于日期时间操作。
- ...
需求与安装
- PHP >= 7.4||8.*
composer require hradigital/php-datatypes
使用
有关如何使用这些数据类型的更多信息,请参阅项目的使用说明以及这里的一些实现示例。
贡献
向项目贡献很容易,欢迎并感谢贡献。
显然,单独维护项目会更困难,但将尽力保持并改进它,因为我计划将其用作其他项目的依赖项。