使用PHP Russia 2019进行草图绘制:简洁的代码,黑暗的魔术



5月17日,首次为PHP开发人员PHP Russia 2019举行的专业会议在莫斯科Infospace举行,经过长时间的停顿,他们得到了一个完全地面化的平台; 在公告中,我们将其与体育馆进行了比较,而“最高IT部门”之一的佩奇·皮什尼科夫(peychpishnikov)没有。 “体育场”至少在第一个赛季就获得了尊严,与足球原型的区别在于,很难在球员和球迷之间进行严格区分。

在“大饼冻结冰河时期”期间-在俄罗斯召开的大型PHP会议长达9年之久-围绕该语言的社区需要召开这样的会议。 同时,人们对该活动寄予了厚望,使所有人感兴趣的任务被认为是非同寻常的。 但是恐惧却有大眼睛,健康的偏执狂具有良好的视野:组织方面的IT事件的经验,以及程序委员会方面的“ PHP magic”的力量以及行业参与者的权威,使我们有可能组织一次成熟的事件第一次尝试。

将近500人到达了PHP俄罗斯。 在线观众也很大-数百名观众联系在一起。 该计划的基础是“水泥化”的22份报告,其中包括来自著名外国演讲者的五份报告,以及三份以即席格式“非会议”形式进行的会议和表演。



会议分三步进行,如果没有机会以后再观看主程序中发生的所有事件,则选择去哪里会很痛苦。

会议的联合组织者亚历山大·马卡罗夫(Alexander Makarov)
-我们在程序委员会中进行了很长时间的思考,终于动摇了网格,以解决这个难题:我们放弃了将讲英语的人放在单独的流中的想法,我们观察着使报告相互平衡。 相对而言,最受打击的影片是平行出现的,没有人吸引大多数观众。 当然,每个轨道中都有概念上的连接词:例如,在Dave Liddament演讲后,他谈到了PHP代码的静态分析后,就非常关注PHPStorm,Kirill Smelov的报告(整理了该IDE的设备)是在同一房间开始的。一个关于PHP 7.4创新的故事,随后是8.0的演示。

关于主题


正如预期的那样 ,大部分性能都是围绕特定于PHP的主题构建的,其中很大一部分是非常非常严格的。

在会议上感兴趣的主要媒介中,强调了语言本身的未来,其体系结构和标准化,PHP异步编程,其最佳实践和隐式功能,与特定框架配合使用,甚至使用PHP堆栈进行机器学习。



重要论文


程序委员会严格地选择报告,因此要确定“最酷”的报告是有问题的:程序中至少没有根据来宾的第一反馈的结果坦率地通过程序。 因此,作为一个示例,我们不得不选择以下几个方面:

  • 最拥挤的
  • 最令人期待的
  • 最富有的惊喜。



Nikita Popov:键入属性等等。 PHP 7.4即将推出什么?




Nikita Popov是PHP本身最活跃,最杰出的核心开发人员之一,当之无愧地成为会议的头条新闻。 他的报告是在带有作者注释的变更日志(加上代码示例)与对语言的未来的远见卓识之间的交叉。 一致而简洁地,Nikita在PHP的下一版本及以后的版本中解释了等待我们的内容。

根据预计的时间表,版本7.4的alpha版本将于2019年6月6日发布,而版本7.4 GA将于11月21日推出。 好吧,一年之后,即2020年12月,谣言煽动的“八”将被释放。

将在PHP 7.4中实现的主要事情是:

  • 类型属性
  • FFI-外来功能接口,用于在C语言中使用外部功能;
  • 箭头功能;
  • -预加载;
  • -运算符??= ;
  • -协变量返回类型;
  • -薄弱环节(WeakReference);
  • -为数组添加运算符。

即将发布的版本中最令人期待的创新也许是能够为类属性设置类型。 值得注意的是,必须必须显式初始化此类属性,并且如果未指定其默认值,则该属性不会变为null-否,在这种情况下将引发异常。 而且,除其他外,类型化属性将有助于将类似交叉点类型语言中仍缺少的属性转换为PHP。 换句话说,一次为参数指定几种类型。

PHP 7.4的第二个主要变化是箭头功能的首次亮相。 这些是单行匿名函数-某些开发人员可以肯定,语法糖没用,尽管其他人发现它同样有用。

您也不能忽略以前在该语言中缺少的??=运算符。 它的作用是:如果表达式中不存在左侧的参数或该参数为null,则会为其分配右侧的参数值。

在仍在讨论中的可能创新中,提到了仿制药。 但是,尼基塔立即保留了其全面实施并非易事的保留。

至于在7.4版中认为过时的功能,其中有几个。 从左到右处理三元运算符已被扔到历史的垃圾箱中-在G8中,此语法将产生错误。 并置运算符的优先级也将降低:如果将其与加法或减法运算符一起使用,将首先对其进行处理。



演讲结束时,尼基塔(Nikita)被他试图尽可能客观地回答的问题所淹没,听众得到了一些宝贵的建议。

尼基塔·波波夫(Nikita Popov):
-我认为类型化集合将采用泛型形式。

Dmitry Stogov:PHP 8中最有趣的东西





Nikita Popov启动的这条生产线,由PHP核心的另一个杰出贡献者-Zend Technologies的首席工程师Dmitry Stogov继续进行。 他讲述了该语言的更遥远的未来-谈到了8.0版圣礼。 近年来,他一直致力于提高PHP性能,并且同样强调自己的故事。

十年半以来,这种语言“加速发展”。 5.1和7.0版获得了显着的性能提升。 在“七个”时代,其发展是平稳的:从一个版本到另一个版本提高代码执行速度并不是根本。 但是,PHP 8.0向开发人员承诺会赠送一个礼物袋。 他们正在等待很多有趣的事情。

我们说“有趣”-是指JIT吗? 不完全是 是的,的确,即时动态编译有望在8.0版中提高性能,但是……仅在综合测试中,在实际应用中,即使微不足道,也可能会降低速度。 但是,改进是可能的。

然后,“肉”开始了:Dmitry在其中深入了解了PHP和JIT的基础知识,并一路解释“ JIT怎么了”,并与公众分享JIT,预加载机制和FFI以及由于它们旨在提高PHP代码的性能而设计。

上面的三合会为PHP开辟了新用途。 可以直接在PHP中直接编写扩展程序,连接第三方C库,创建原型而无需额外的工作...

但是,作为一名诚实的工程师,德米特里(Dmitry)不仅概述了该语言第八版中将提供的令人眼花possibilities乱的可能性,而且还警告了它的缺点,而是“非最佳性”。 当然,在PHP启动时加载预加载脚本非常好,但是,如果不重新启动就无法替换它们,并且某些脚本可能无法按预期进行预加载。 当然,借助FFI,您可以使用C语言定义的数据结构进行操作,并且API本身简单而令人愉悦,只有FFI开辟了上千种新方法来射击自己,并且在没有JIT的情况下其性能相对较低,这真是太棒了。

同时,八国集团基础上的技术结合带来的好处多于缺点。 此外,报告中提到的Dmitry的许多功能在7.4版中已经可以感受到。

亚历山大·利萨琴科:魔法学校PHP




午餐后的整个会议室是由Alpari网站开发负责人,Alexander Lisachenko收集的,Alpari网站开发的负责人,PHP Russia 2019程序委员会的成员,面向方面的框架Go的创建者和首席开发者! 哎呀 他通过棱镜看了一眼该语言-我们的字幕没有说谎! -魔术。

正如直觉是隐藏在理性之外的逻辑一样,编程语言的魔力是基于对这种语言的内部结构,“变形”和漏洞的深入了解,利用该语言的异常或鲜为人知的功能。

亚历山大以多样化的方式展示了许多技巧,许多坐在大厅里的人(其中有少数是低年级的人)炸毁了大脑。 演讲者逐渐了解了如何利用他多年来在挖掘PHP的过程中发现的调整,以使编码受益。

神奇的方法,访问属性的非标准方法,更改上下文,流过滤器-所有这些以及更多的“大师级Lysachenko”都从务实的角度出发。 尽管不可能不注意到PHP讨厌者更喜欢称之为先天缺陷的悖论之美。 我们不知道,我们不知道...我们喜欢它。

亚历山大特别注意PHP中的面向方面的编程,它完全符合实践的原则,即您讲道的尾巴和鬃毛所用的语言,并且为Go语言的创建奠定了基础! 哎呀

Dave Leading:实用的高级静态分析




Lamp Bristol的主管Dave Liddament与公众分享了有关PHP代码高级静态分析的最佳实践。 作为开源工具SARB(或称为Static Analysis Results Baseliner)的作者,他为观众展示了一种实施静态分析的路线图,以便每个人都可以借鉴他认为适合自己的堆栈和需求的审阅解决方案和技术。 或将该报告用作实施静态分析的整体微型指南。

强调开发环境作为静态分析工具库的一部分的重要性,我们的客人真诚地赞扬了PHPStorm,这似乎使JetBrains的部门主持人Roman Pronsky感到惊喜,后者负责在他的公司中负责此IDE。

Dave首先需要进行基本检查:

  • 林亭。
  • 例如,使用PHP CS Fixer检查是否符合编程标准(包括评估在命令内部编写的代码的一致性)。
  • 安全代码分析。 作为这种工具,发言人推荐了Symfony的作者SensioLabs的Security Checker
  • 检查是否忘记了var_dump。
  • 自动同步检查composer.json和composer.lock(composer验证)

在一个光荣的GitHub存储库中 ,任何人都可以找到那些以及用于静态代码分析的许多其他工具。

对于symfony的拥护者而言,该报告非常有用:对于那些在工作中使用该框架的人,他给出了实现静态代码分析的大量技巧。

此外,Dave深入研究了使用更高级的工具(主要是Psalm,Phan和PHPStan)的细微差别。 他单独强调了在持续集成条件下的工作(他还为一些工具的听众提供了建议)。

鉴于对代码的静态分析以及它们如何影响开发的细节,Dave对bug和“几乎bug”的分类也提供了很多信息。 例如,即使参数类型指定不正确且不会在工作流程中引起错误,但是,随着项目变得越来越复杂,它很容易变成其他团队成员会踩到的耙子。 根据演示文稿中提供的统计数据,此类可进化性缺陷(在代码演变过程中发现的缺陷)约占代码检查过程中出现的错误的80%。

还有...




很难概述会议计划:所有会议内容都很有用,但是,如果仔细列出全部22个报告,即使其摘要尽可能短,也会使报告变成难以阅读的表格,因此,我们仅举几例。

为了兑现承诺,JetBrains的Kirill Smelov深入探讨了PHPStorm内部设备的细节,包括PHP如何参与创建IDE。

SpiralScout LLC的Anton Titov的演讲在会议计划的框架中被证明是很少见的案例,当主题偏离“严格使用PHP”课程时,然而,他关于使用RoadRunner开发混合PHP / Go应用程序的故事无疑是成功的。

捷克代表汤玛斯·沃特鲁巴(TomášVotruba)叫满屋子,向您详细介绍了如何减少重构大量旧代码的痛苦,并利用其作者Rector的决定多次提高了处理速度。

Dmitry Eliseev(ElisDN)阅读了报告“主管OOP:可靠业务逻辑的组织”,他在其中研究了如何将UI和业务逻辑从思想中分离出来。

会议和混战


在主程序即将结束时,测试了Unconference格式,而不是其中的一个组成部分,该格式是“开放式麦克风”的类似物:任何人都可以出去发表关于他感兴趣的主题的小型报告。 这种“ IT站”的试点是成功的:亚历山大·马卡洛夫(Alexander Makarov)谈到了Yii3可能是什么,来自Badoo的来宾分享了一个故事,他和他的同事如何代理Xdebug,最后,另一个自发的演讲致力于工作的特点。使用专门的标签打印机并进行检查,然后将其固定到PHP。



午餐后,在另一个单独的第四间房间里,开始了一组应用的mitap(他们也找到了听众):

  • “ Laravel对Symfony:无与伦比的比较。”
  • “如何为Symfony做出贡献以及为什么这样做。”
  • “如何在企业中使用Yii2? 从Symfony获得最佳实践!”

反过来,会议合作伙伴并没有安排“架子公墓”,而是安排了不引人注目的娱乐性和适当的运动。 ManyChat进行了在线PHP测验,创建和解开僵尸程序的竞赛以及很酷的正则表达式填字游戏。 在角落,Badoo削减了Tech Alias(Alias桌面版的IT版本)。 好吧,在Paxful展台上,游客们正在等待“非典型的紫色大象”,爱沙尼亚的贴纸和糖果。





“确保”过去


Afterparty成为社区内部各方面合作的令人愉快的案例:组织者与Beer PHP会议的发起人一起安排了聚会。 在主体计划结束时,想要继续在“工艺氛围”中进行辩论的人,其中包括很多发言者,进入了红十月。



我们如何看待“大象2020”


如果非常简洁,那么可以使用PHP Russia 2020。 除了已证明其相关性的基本格式,下一届会议肯定会有新的格式。 愿望清单和组织委员会的变更日志仍在填写中,但是可以肯定的是。

  • 毫无疑问,我们将继续进行会议:人们对这种格式感到满意,并要求更多。
  • 我们将尝试订购一头大象。 在PHP Russia 2019中,他们不是:事实证明,他们的权利属于法国人,而且他们的速度非常慢-需要订购4-6个月。
  • 几乎可以肯定的是,我们将带来与我们计划相同的Marco Pivetta,但由于无法控制的原因而在最后一刻跌落。 我们也对Symfony Fabien Potencier的父亲有看法。 最后,我们还将尝试带Rasmus Lerdorf:我们叫他参加第一次会议,但他与其他活动有交集。

总而言之,敬请期待!



附言:最后-一小笔奖金。 众所周知, 哈布罗夫斯克本地居民,PHP俄罗斯计划委员会成员Konstantin Burkalev也会主持IT播客。 接下来的第104版 SDCast是他接受了两位当之无愧的会议发言人安东·沙博维蒂和安东·莫雷夫的采访。 他首先谈到异步PHP,多任务处理和寿命长的PHP流程,然后讨论第二部分-Rest API和GraphQL,以及方法的优缺点,应用程序的领域和任务。 听好了!

Source: https://habr.com/ru/post/zh-CN454028/


All Articles