skyzyx/strong-types

此包已被弃用且不再维护。作者建议使用《升级你的PHP》包代替。

为PHP启用强类型。这允许进行更严格的验证,尤其是在接收用户输入时。

1.0.9 2015-03-03 08:00 UTC

This package is auto-updated.

Last update: 2022-02-01 12:41:42 UTC


README

Source Latest Stable Version Total Downloads Open Issues Build Status Coverage Status Code Climate Code Quality Dependency Status SensioLabsInsight HHVM Support Documentation Status License Author

为PHP启用强类型。这允许进行更严格的验证,尤其是在接收用户输入时。

为什么有人会这样做? 这在开发API时很有用,当你需要严格的类型时。通过在事先定义这些类型/形状为类,你可以强制执行传入/传出的数据类型,但也可以在验证步骤之后访问原生值。

它有意拒绝并避免任何类型的“类型按摩”。如果你向StringType传递一个integer,你将得到一个异常。所有错误都以带有有用错误信息的异常形式抛出。

特性

  • BooleanType
  • 集合(ArrayAccess)
  • 枚举
  • FloatType
  • IntegerType
  • StringType(包括Utf8String)

DateTime已经强类型,所以使用该类进行强日期/时间类型。

示例

我们可以执行简单的验证强制,这在PHP 5.x中很有价值。(在PHP 7中请使用严格的类型。)

use Skyzyx\StrongTypes\StringType;

$abc = new StringType('abc');

$v123 = new StringType(123);
#=> UnexpectedValueException:
#=> The Skyzyx\StrongTypes\StringType class expects a value of type string. 
#=> Received a value of type integer instead.

$abc->getValue();
#=> 'abc'

您还可以扩展基本类型以创建更具体的数据类型(即,数据形状)。

use Skyzyx\StrongTypes\StringType;

class FiveChars extends StringType
{
    public function __construct($s)
    {
        $this->setExactLength(5);
        parent::__construct($s);
    }
}

$abcde = new FiveChars('abcde');

$abc = new FiveChars('abc');
#=> Exception

$v12345 = new FiveChars(12345);
#=> Exception

安装

使用Composer

composer require skyzyx/strong-types=~2.0

并将其包含在您的脚本中

require_once 'vendor/autoload.php';

测试

首先,运行composer install -o以下载和安装依赖项。

您可以通过以下方式运行测试

bin/phpunit

贡献

以下是贡献的过程

  1. Fork PHP Strong Types到您的GitHub账户。
  2. 将您的GitHub副本克隆到本地工作区。
  3. 编写代码,修复错误,并添加100%代码覆盖率的测试。
  4. 将您的更改提交到本地工作区并将其推送到您的GitHub副本。
  5. 您提交一个GitHub pull request,并描述更改的内容。
  6. 贡献将得到审查。评论中可能会有一些来回讨论。
  7. 如果一切顺利,您的pull request将被接受,您的更改将被合并。

作者、版权与许可

另请参阅参与此项目的贡献者列表。

根据MIT许可协议使用。

编码标准

PSR-0/1/2 是一个坚实的基础,但它们本身并不是完整的编码风格。我已经花时间记录了我个人编码风格的所有细节和微妙之处。它不仅超越了括号放置和制表符与空格的问题,还包括文档注释、三元运算符以及使用哪种英语变体等问题。它追求的是全面性和严格性,而不是希望我们都能和睦相处。

https://github.com/skyzyx/php-coding-standards