PHP注释月刊

PHP注释-2021年9月

PHP注释月刊

大家好!
PHP8.1已经到达了第一个候选版本,更改列表已经确定。在计划于11月底发布的最终版本之前,我们还会看到至少5个候选版本。

同时,PHP内部已经在讨论PHP8.2的另外三个建议:操作符重载、美元这个键入提示,并弃用动态属性。

当心恶意软件编写程序包!其中两个最近在Packagist上被发现。

PHP-FIG讨论了向PSR添加一种新类型的标准。

您可以在9月版的PHP Annotated中阅读更多关于此新闻的信息。像往常一样,我们为您精心挑选了各种优秀的文章、工具、视频和流。

⚡️ 消息

  • PHP 8.1.0 RC 1

    离最终版本还有两个半月,至少还有5个候选版本。

    8.1版的最终发布还有两个半月,至少有5个候选版本即将发布。这里有一个关于如何在macOS上安装PHP8.1的微型教程通过自制。此外,PHP8.1还有现成的Docker图像.

    您可以在以下站点上找到PHP8.1的全面描述:php.watch/versions/8.1在Brent Rooses的博客上,stitchr.io/blog/new-in-php-81.

  • PHP8.0.10,PHP 7.4.23,PHP 7.3.30

    当前分支的安全性和错误修复更新。

  • 斯威夫特梅勒的终结

    受欢迎的邮包速递员将只支持到11月。它将被替换为symfony/mailer.

    Symfony/mailer的特性和概念复制了Swiftmailer,因此迁移应该相当容易。校长有一份工作迁移脚本,它只需要重命名类。

  • PHP发展建议(PERs)

    PHP-FIG目前只发布PSP标准。问题是有些标准需要不断完善。例如,在代码样式方面,PSR-12取代了PSR-2,现在它不包括PHP7.4-8.0中的新特性。

    现在有人提议采用一种称为PER的特殊类型的建议,这种建议可以随着时间的推移而改变。

  • 恶意软件编写程序包

    在Packagist上,有一个名为符号字体/流程它做的事情和symfony/过程,但它也收集了有关该机器的信息,将其发送给第三方,并打开了一个网络外壳。

    攻击者预计用户在安装和键入时可能会拼错包名符号字体而不是西蒙尼.

    该恶意软件包已从Packagist和GitHub中删除,并且对其工作原理的分析有空。

    另一个后门被发现laraveli/二维码包裹从代码中可以看出,恶意软件正在复制这种类型的web shell把它放在机器上。

    为了保护自己免受此类攻击,您可以添加本地php安全检查器到您的CI管道或使用php安全检查器GitHub操作。

    对于更复杂的情况,可以运行marcocesarato/PHP反恶意软件扫描仪.

  • 这个hautelook/alice包存储库已从GitHub中删除

    该软件包的下载量超过800万次,主要贡献者不知道为什么他被从维护者列表中删除,而存储库显然是私有的。

    Théo的GitHub配置文件中提供了一个工作叉:Theofiry/AliceBundle.

PHP内部构件

  • [RFC]不推荐动态属性

    在当前版本的PHP中,如果尝试写入不存在的属性,则会自动创建该属性。

    在现代代码中,对不存在的属性进行写入很少是有意的——这通常是一个错误。

    此RFC建议取消并随后取消创建动态(未声明)属性的功能。

    类用户{public$name;}$User=新用户;//分配声明的属性用户::$name$user->name=“foo”;//哎呀,一个输入错误:$user->nane=“foo”;//PHP8.2:抛出警告,但仍创建动态属性。//PHP9.0:引发错误异常。

    此更改不适用于标准类以及它的继承人。魔法方法的行为__得到/__设置也不会受到这种变化的影响。
    $obj=(对象)[];//=新的stdClass;//无弃用警告$obj->foo=1;类myStdClass扩展stdClass{}$obj2=new myStdClass;//无弃用警告$obj2->bar=1;

    通过PHP9.0中的这一更改,可以将对象的大小减少8个字节。当然,对于单个对象来说,这算不了什么。但对于大型应用程序,累积起来可能会产生明显的差异。

    还有一个讨论是关于这样做是否有意义别名动态对象的stdClass.

  • [RFC]用户定义的运算符重载

    在本RFC中,Jordan LeDoux基本上建议为每个操作符定义不同的魔术方法,例如。__添加()对于`+`__等于()对于`==`.
    使用这些方法可以描述应用于对象的运算符的所需行为。

    $a=新号码(8)$b=新编号(6)$c=新数字(4);//而不是这个$posRoot=$b->mul(-1)->add($b->pow(2)->sub($a->mul($c)->mul(4))->sqrt())->div($a->mul(2));//可以这样做$posRoot=(-1*$b)+($b**2-4*$a*$c)->sqrt())/(2*$a);

    如果这个提议被接受,那么就有可能在userland代码中实现标量对象的行为。
  • [RFC]$此返回类型

    尼基塔提出了使用美元这个作为返回值类型。这将导致解释器检查对象是否与返回的对象相同。

    以下是它与自己静止的本·拉姆齐:

    • 自己–返回值必须是设置此类型声明的同一类的实例。
    • 静止的–返回值必须是使用此类型声明调用方法的同一类的实例。
    • 美元这个–返回值必须与使用此类型声明调用方法的实例相同。

    类测试{public function method():$this{return$this;}公共函数not_this():$this{return new self();//致命错误}
  • [RFC]不推荐部分支持的可调用项

    以下可调用项当前被可调用这个_可调用()功能,以及调用用户函数(),但不受n支持$callable().

    “self::method”“parent::method”“static::method”[“self”,“method”][“parent”,“method”][“static”,“method”][“Foo”,“Bar::method”][new Foo,“Bar::method”]

    此RFC建议在PHP8.2中弃用,并在PHP9.0中删除对这些可调用项的支持。

    普通可调用项,如“功能”,“Foo::方法”,[“Foo”,“method”][新Foo,“方法”]不会受到此提案的影响,因为对他们来说,使用括号调用将按预期工作:

    类Foo{function method(){echo'method';}}[新的Foo,“method”]();/>方法
  • GitHub上的所有PHP RFC

    作为一个实验,PHP8.1版本管理器BenRamsey导出了所有838曾经向Git讨论过RFC,以及每个RFC的更改历史。

工具

  • whsv26/功能性–作者在集合的现有PHP实现中遇到问题,并编写了自己的包。
  • 法贝利奥/法贝尔–此transpiler for PHP允许在较旧的环境中使用最新PHP版本的功能,或者在必须保持向后兼容性的情况下使用。您还可以开始添加对尚不存在的功能的支持,例如异步/等待关键词。

    类似的工具已经存在,比如marcioAlmada/耶预处理. 和校长也可以做后端口。但Phabel的特殊之处在于与创作者.
  • phparkitect/arkitect–用于定义和检查项目体系结构规则的工具。
  • niklongstone/regex反向–生成满足给定正则表达式的随机字符串。
  • azjezz/psl–标准PHP库的外观。
  • github php/赞助商–用于使用GitHub赞助商API的软件包。您可以通过检查用户是否是发起人来组织访问控制。
  • koriym/koriym.Attributes–一个简单的工具,允许您通过单个接口读取PHPDoc注释和PHP8属性。更高级的螺旋线/属性也可用于相同的任务。
  • grep.app–在GitHub上快速搜索代码的便捷工具。
  • mrsuh/php泛型-用PHP编写的PHP泛型。这是在PHP中实现语法级泛型的一次有趣的功能性尝试。

西蒙尼

拉维尔

杂项

播客


谢谢你的阅读。我们希望你有一个伟大的一天!

如果你有任何有趣或有用的链接可以通过PHP注释分享,请在这篇文章上留言或给我发一封电子邮件推特.

订阅PHP注释

你的JetBrains PhpStorm团队
发展的动力