skyzyx / strong-types
此包已被弃用且不再维护。作者建议使用《升级你的PHP》包代替。
为PHP启用强类型。这允许进行更严格的验证,尤其是在接收用户输入时。
1.0.9
2015-03-03 08:00 UTC
Requires
- php: >=5.4.0
- mabrahamde/idna-converter: dev-master
Requires (Dev)
- codeclimate/php-test-reporter: *@dev
- d11wtq/boris: *
- fabpot/php-cs-fixer: *
- pdepend/pdepend: *
- phpmd/phpmd: *
- phpunit/phpcov: ~2.0
- phpunit/phpunit: ~4.3
- satooshi/php-coveralls: *@dev
- sebastian/hhvm-wrapper: ~2.0
- squizlabs/php_codesniffer: ~2.0@dev
README
为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
贡献
以下是贡献的过程
- Fork PHP Strong Types到您的GitHub账户。
- 将您的GitHub副本克隆到本地工作区。
- 编写代码,修复错误,并添加100%代码覆盖率的测试。
- 将您的更改提交到本地工作区并将其推送到您的GitHub副本。
- 您提交一个GitHub pull request,并描述更改的内容。
- 贡献将得到审查。评论中可能会有一些来回讨论。
- 如果一切顺利,您的pull request将被接受,您的更改将被合并。
作者、版权与许可
- 版权(c)2014–2016 Ryan Parman。
另请参阅参与此项目的贡献者列表。
根据MIT许可协议使用。
编码标准
PSR-0/1/2 是一个坚实的基础,但它们本身并不是完整的编码风格。我已经花时间记录了我个人编码风格的所有细节和微妙之处。它不仅超越了括号放置和制表符与空格的问题,还包括文档注释、三元运算符以及使用哪种英语变体等问题。它追求的是全面性和严格性,而不是希望我们都能和睦相处。