karimgeiger / generics
此包已被弃用且不再维护。未建议替代包。
PHP的泛型实现
dev-master / 1.0.x-dev
2016-06-21 19:36 UTC
Requires
- php: >=7.0.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2023-08-16 20:08:06 UTC
README
PHP目前积累了一些缺少的语言特性。使用PHP 7,我们现在甚至有标量类型声明。
但有一个非常重要的特性缺失:一旦你开始处理数组,所有东西都会丢失。你将无法确定你检索到的值或键是否为正确的类型。别担心了!有了这个简单的泛型类,你终于可以放松了。
它是如何工作的?
非常简单。如果你想控制键和值的类型,可以创建一个Generics\Dictionary
对象,或者如果你只关心值,可以创建一个你想要类型的Generics\ArrayList
对象
$list = new Generics\Dictionary('string', 'double', ['foo' => 1.5, 'bar' => 13.37]);
然后你就可以使用它了
$list['baz'] = 3.14; var_dump($list->toArray()); /// ['foo' => 1.5, 'bar' => 13.37, 'baz' => 3.14]
但是,一旦发生什么不好的事情...
$list['sample'] = 1; // Generics\Exceptions\InvalidTypeException: Type must be double, but integer was given.
很简单,对吧?当然,这不仅适用于PHP类型,也适用于你自己的类。构造函数的第一个参数将针对键类型,第二个参数将针对值类型。作为第三个选项,你可以预先填充你的列表。
如果你更喜欢一个简单的列表,具有整数字符键和泛型值
$newList = new Generics\ArrayList(YourObject::class); $newList[] = new YourObject();
如果你熟悉其他语言,可以将其视为Generics\Dictionary
和Generics\ArrayList
特性
这个库尽可能小巧。没有依赖。只需纯PHP7。为了确保你的安全:你将获得100%的代码覆盖率,因为确保一切按预期工作非常重要。
用法
将此包添加到composer.json
文件的require
部分并更新你的项目。
"require": { "karimgeiger/generics": "1.0.x-dev" }
composer update
贡献
喜欢这个项目?想贡献?太好了!请随意打开一些Pull请求或只是一个问题。我不会咬你 :)