Tag: Php7

PHP仍缺少位:泛型。

本文是有关PHP缺失位的系列文章的第一篇。 以后的文章将讨论其他类型的概念,例如访问器和数据类型。 PHP 7.2即将来临,带来了与类型相关的更改,例如签名中的object类型或参数类型扩展。 这些证实了PHP社区加强PHP类型系统并提高类型安全性的意愿。 在Libcast,我们赞赏这些更改,这些更改使您可以依靠IDE在键入时显示类型错误,并在编译时验证类型,从而减少了查找和修复错误所需的时间 。 我们希望泛型是一项功能,希望不久后可以使用PHP,并允许使用给定类型的泛型容器。 泛型 泛型类允许声明必须在使用时专用的泛型容器 (您不能直接使用泛型类)。 任何类型都可以专用于泛型类,只要它们尊重泛型类中使用的签名即可。 泛型类可以使用几种泛型类型,然后仅通过修复泛型类型的子集来进行部分专业化 。 PHP中的泛型 RFC正在草拟中,但尚未被接受。 黑客/ HHVM 已经采用的泛型。 ircmaxell在PHP用户环境中进行了一个有趣的实验(当然,请勿在产品中使用此功能)。 泛型在PHP中对于容器非常有用:抽象数据类型(堆栈,队列,地图等)和域容器(日期集,一组人等)。 它们还将允许更精确的签名:目前,PHP可以iterable地在签名中声明集合,但是通用声明iterable可以使我们仅要求书本集合。 Libcast的仿制药案例 我们创建了一个Libcast新安全视频平台API的模拟模型,在该模型中,我们需要随机生成数据,但有时需要遵循给定的分发方式。 例如,我们想要生成每个具有给定机会被发射的域事件,从而在模拟中生成真实的数据 。 我们还希望根据当前访客群的真实地理分布来模拟假访客。 我们看到了一个机会,可以根据普通类中的分布来提取做出选择的部分。 这是处理引用的示例的简化的第一枪: //生成IP地址 最终课程IpGenerator { 公共函数generate(string $ countryCode =’FR’):IP { // … } } 最后一个类DistributedIpGenerator { / ** @var IpGenerator * / 私人发电机 / ** @var数组* / 私人$发行; […]