PHP注释-十月2021
问候大家!
下面是过去一个月里PHP世界的一些亮点。
- PHP 8.1 RC3发布了,第一个使用枚举的包已经可用了!
- Magento的社区分支已经宣布。
- 除了psr之外,还将有一种新的推荐类型,称为PERs。
- Symfony 6将是完全键入的-如何更新?
- 针对PHP 8.2提出了新的优化数据结构和独立的空类型。
- 已经发布了一个带有disable_functions的PHP漏洞,尽管它实际上不是一个真正的漏洞。
你可以在10月版的PHP注释中阅读更多关于这一新闻。像往常一样,我们为您精心挑选了各种优秀的文章、工具、视频和流媒体。
⚡️新闻
PHP 8.1 rc 3
发布了第三个候选版本时间表.要了解PHP 8.1中的新特性,请查看PHP 8.1有什么新功能和PHP 8.1:之前和之后职位。一个全面的变更列表是可用的在PHP。看.
的PHP 8.1的迁移指南现在也有。
你可以试试PHP 8.1码头工人,例如在Mac上使用php:8.1-rc-cli映像通过自制程序,或者你可以随便找找3 v4l.org.
第一个使用PHP 8.1中的枚举的包已经可用了!
alexanderpas / php-http-enum—带有http响应消息的状态码和文本的枚举。PHP 8.0.11,7.4.24和7.3.31
用安全修复程序更新受支持的分支cve - 2021 - 21706.
此修复解决了一个导致错误的问题
ZipArchive:: extractTo
在Windows上使用特定的文件路径名在目标目录外解压缩压缩文件。Magento的未来
这封来自Magento社区成员的信宣布,Magento将会有一个社区组织运行的分叉。目标是确保Magento的长期开源生命。
此前,Adobe宣布他们计划将Magento分解成微服务。这究竟将如何发生尚不清楚。这就是为什么要创建一个分叉。它将与Adobe的Magento兼容,只要后者是开放的。
PhpStorm 2021.3早期访问程序是开放的
PhpStorm 2021.3早期访问计划正在全面展开。每周我们都会发布新的版本,允许您在正式发布之前尝试新功能。
即将发布的主要版本将包括对PHP 8.1的完全支持、对泛型的许多改进、部署的新选项、更新的调试器接口等等。
PER工作流- PHP-FIG
PHP- fig已经批准了PHP演进建议的想法。除了PSR标准之外,现在还将有PERs,这是一种可以永久更改和补充的建议。例如,在代码样式的情况下,可以添加新的规则来反映新的语言特性。
要绕过PHP中的“漏洞”(不是)
disable_functions
研究人员最近发表属性设置的约束的方法
disable_functions
指令php . ini
.您可以使用
disable_functions
禁止在PHP脚本中使用某些函数。例如,你可以禁止系统
,执行
,proc_open
和shell_exec
阻止对外部程序的调用。
你不能禁止eval ()
,因为它不是一个函数,而是一种语言构造。旁路问题不能称为漏洞,因为
disable_functions
不是一个安全特性,依赖它来保证安全是一个坏主意。
了解更多关于PHP安全问题的信息:wiki.php.net/security.如果你有兴趣更详细地理解这个问题,有一个很酷的disable_functions的工作原理以及这些漏洞是如何建立起来的。另一个甚至解释了你是如何做到的自动搜索此类问题.
另外,请查看对一个真实的RCE漏洞的分析fiveai /声望, Laravel的一个热门项目:通过Laravel配置注入执行代码.
作曲家/作曲家2.1.9
此更新修复了Windows (cve - 2021 - 41116).Windows用户一定要更新。
PHPOpenDocs.com
下面是一个为PHP相关内容创建社区站点的实验。
它已经有了一个有用的支持页面提供按PHP版本分组的贡献者列表,以及内部章节中有许多关于PHP代码结构和如何开始为PHP核心做贡献的资源链接。
PHP内部
PHP中的新数据结构
PHP有一个通用的数组数据结构,可以用作列表、关联数组、队列、堆栈等。
通用性是通过在引子下面使用一个哈希表实现的。但是,这种多功能性是以额外的内存使用和细微的性能开销为代价的。
SPL有更专门化的数据结构,但它们也有自己的包袱。
Tyson Andre建议向PHP中添加新的优化数据结构。
实现这一目标的一个选择是添加流行结构php-ds / ext-ds扩展,但它的作者不支持这个想法。在GitHub上的这个线程让我们对这场辩论的细节有所了解。
所以现在有两个rfc:
- [RFC] final class Vector向量结构——是一组具有连续索引0,1,2等的元素。它需要的内存只有当前阵列的一半,工作速度也比类似的SPL结构快。就其API而言,它只是一个带有实现的普通类
ArrayAccess
,IteratorAggregate
,可数名词
接口。$values = new Vector();For ($i = 0;我美元
- [RFC]最终类Deque是一个双向链接的队列,即在队列的开始和结束都可以添加和删除元素。你可以用它来代替
SplQueueue
或SplDoublyLinkedList
并立即看到性能和内存消耗的改进。双端队列
也与使用大型数组的长时间运行的应用程序相关,因为它们在内存管理方面存在已知的问题。
这些结构和其他结构的实现可在TysonAndre / pecl-teds扩展。
- [RFC] final class Vector向量结构——是一组具有连续索引0,1,2等的元素。它需要的内存只有当前阵列的一半,工作速度也比类似的SPL结构快。就其API而言,它只是一个带有实现的普通类
[RFC]允许空作为独立类型
George Peter Banyard建议增加使用能力
零
在类型声明。首先,这是PHP类型系统完整性所缺少的部分。有一个
混合
类型,从来没有
类型被添加,也有联合和交叉,但单元类型不见了。其次,这种类型将涵盖类型提示的一些边缘情况,并改进静态分析。
例如,目前您可以使用伪类型
假
但不能指定函数的返回值假|零
,只有bool |零
.opcache是如何工作的
尼基塔·波波夫(Nikita Popov)并不总是写博客,但每当他写博客时,他都会清晰而详细地描述概念。
工具
- Xdebug 3.1.0流行的PHP调试器收到了一个更新。它提供了对PHP 8.1的支持、许多修复和一些相当小的特性。不要错过这关于Xdebug 3的系列视频由扩展作者德里克·雷森斯。
- 螺旋/走鹃2.4-这是对Golang的PHP应用服务器的一个重大更新。该版本包括对队列、键值存储和与时态集成的支持。看到细节.
- 砖/日期-时间-一组用于处理日期和时间的不可变类。
- php-runtime /运行时- Runtime组件将应用程序的引导逻辑从全局状态中分离出来,因此允许您在任何环境(如PHP-FPM、ReactPHP、Swoole等)中不做任何更改地运行应用程序。
这原本是Symfony的一个组件,但后来证明它非常好,现在它是GitHub上的一个独立组织。 - rindow / rindow-neuralnetworks神经网络训练框架基于Python Keras.根据其文档, GPU支持仅在实验模式下可用,且仅在Windows下可用。
- piko-framework /路由器-另一个PHP路由器,这个是基于根树而且,根据基准,比Symfony路由器更快。
- nunomaduro / termwind-一个PHP 8+包,格式化输出的控制台程序与顺风CSS风格的语法。
- icanhazstring / random-issue-picker-如果你想参加Hacktoberfest,但不知道从哪里开始,这里有一个工具,可以在GitHub或GitLab上为你随机选择一个问题。
Symfony
- 为Symfony 6准备应用程序和包Symfony 5.4和6.0将在11月发布。它们之间的区别是,Symfony 5.4仍然包含所有已弃用的特性,而在Symfony 6.0中,这些特性将全部删除。此外,Symfony 5.4和6.0将在可能的情况下向所有方法属性、参数和返回值添加PHP类型声明。
查看Symfony Core团队成员的详细文章,了解如何更新使用Symfony组件的应用程序:Symfony 6: PHP 8原生类型和为什么我们需要你.
- Symfony Flex,你将不再需要flex.symfony.com.所有的食谱现在都在github.com/symfony/recipes.
- Symfony #771的一周(2021年10月4-10日)
Laravel
- 在测试中使用fixture数据.
- Laravel应用程序中减少查询次数的策略.
- Laravel全球聚会#10:一点点的AWS Lambda,害虫完美.
- 将PHPUnit测试套件转换为Pest
- 让我们建立一个网上商店-一连串漂亮的溪流。
Misc
- PHP之路:静态分析——布伦特·卢斯(Brent Roose)关于静态分析的10天时事通讯。
- 来自Matthias Noback的测试提示:一门课,一门考试?,测试任何东西;比什么都不做要好吗?,编写类似于场景的单元测试.
- 当我们克隆对象时会发生什么?
- 有趣的文章关于' Either '数据结构.
- 关于在PHP中创建一个' Option '类型.
- 13000欧元的视频课程让我再次相信自己- Christoph Rumpel分享了一些关于他是如何启动的细节masteringphpstorm.com课程。
- PHP生成艺术Ben Gillbanks解释了如何使用代码来创建图像,从简单的头像到像素艺术城市:
- FFI上的游戏:quasilyte / kphp-game
KPHP是一个PHP编译器。它将有限的PHP子集编译为运行速度比PHP快的本机二进制文件。来自KPHP团队的人员执行了对FFI的实验支持,并用它制作了一个小游戏作为演示。
值得注意的是,KPHP-FFI与传统PHP的FFI兼容,这意味着游戏也可以在常规PHP 7.4+上运行。
阅读更多关于其他FFI应用的信息PHP中FFI的完整指南.
感谢你的阅读!
如果你有任何有趣或有用的链接通过PHP注释分享,请在这篇文章上留下评论或给我推特.
你的JetBrains PhpStorm团队
发展的动力