美文网首页
PHP in 2020

PHP in 2020

作者: 追梦人在路上不断追寻 | 来源:发表于2020-10-27 21:56 被阅读0次

    在web开发人员和程序员中,这已经不是什么秘密了:PHP没有很好的的声誉。尽管PHP仍然是构建web应用程序最常用的语言之一,但多年来,PHP一直设法为自己赢得了混乱的代码库、缺乏经验的开发人员、不安全的代码、不一致的核心库等名声。

    虽然许多反对PHP的论据至今仍然存在,但也有一个好的方面:您可以使用PHP编写干净、可维护、快速可靠的应用程序。

    尽管PHP有很多缺点,但它是一种值得学习的语言。我想让你知道PHP5时代即将结束。如果你愿意的话,你可以编写现代而干净的PHP代码,并把10年前的混乱抛在脑后。所以让我们看看在过去的几年里,语言是如何变化的,甚至是成熟的。我想请您抛开偏见几分钟,并可能对PHP今天的表现感到惊讶。

    历史总结

    在深入讨论细节之前,让我们先回顾一下PHP这门语言目前是如何开发的。我们现在的版本是7.4,PHP8.0将在2020年底成为下一个版本。

    从5.*时代后期开始,核心团队就试图保持一致的年度发布周期,并在过去四年中成功地做到了这一点。

    一般来说,每一个新版本都会在两年内得到积极的支持,并且会获得另一年的“安全修复”。我们的目标是激励开发人员尽可能地保持最新:例如,每年进行一次小的升级比在5.4到7.0之间进行升级要容易得多。

    最后,php5.6是最新的5.*版本,下一个版本是7.0。至于为什么没有版本6,你可以使用搜索引擎搜索一下便知道了。

    现在PHP的开发是由一群志愿者完成的,他们中的一些人是由他们的雇主支付工资来全职工作的。关于语言如何演变的大多数讨论都是在[邮件列表]上进行的(https://externals.io/).

    排除所有这些问题之后,让我们揭穿一些关于现代PHP的常见误解。

    PHP的类型系统

    PHP最初是一种非常弱的动态类型语言,在当时有它的优点。自从人们开始在更大的项目中使用PHP以来,它的类型系统的缺点就变得很明显了,因此需要更强大的类型支持。

    现在,PHP仍然是一种非常强大的类型语言,但它仍然是一种非常独特的动态代码。与静态分析相结合,像《psalm》这样的工具(https://github.com/vimeo/psalm),phanPHPStan,您可以编写安全的、强类型的和静态分析的代码。

    举个例子,看看这段PHP代码,完全使用它的现代类型系统:

    <?php
    
    declare(strict_types=1);
    
    final class Foo
    {
        public int $intProperty = 2;
    
        public string $nullableString = null;
    
        private Bar $bar;
    
        public function __construct(Bar $bar)
        {
            $this->bar = $bar;
        }
    
        public function withInt(int $value): self
        {
            $clone = clone $this;
            $clone->intProperty = $value;
    
            return $clone;
        }
    
        public function unionTypes(int|float $input): void     
        {         
            *// Union types will be added in PHP 8* 
        }
    }
    

    说实话,PHP的类型系统中仍然缺少一个重要特性:泛型。他们有希望被加入,但还没有具体的内容。对于类型化数组,您需要依赖docblocks来获得适当的IDE支持:

    */** @var int[] */* 
    public array $arrayOfInts = [];
    

    php语法

    在语法方面,7.*时代在使PHP成为一种更成熟的语言方面做了很多好事。为了说明这一点,我列出了一个PHP中新事物的一些特性。

    ** 数组符号多值复制 **

    [$a, $b] = $array;
    

    ** 空值合并 **

    $value = $object->property ?? 'fallback if null'; $value = $array['foo'] ?? "fallback if key doesn't exists";
    
    public function get(string $input): string
    {
        return $this->cache[$input] ??= $this->sanitize($input);
    }
    
    

    ** 数组延展符 **

    $a = []; 
    $b = []; $mergedArray = [...$a, ...$b];</pre>
    

    ** 可变函数 **

    public function get(Foo ...$foos): void
    {
        foreach($foos as $foo) {
            *// …* 
        }
    }
    

    扩展:

    $this->get(...$arrayOfFoo);
    
    public **int** $intProperty;
    

    箭头函数:

    $ids = array_map(fn(Post $post): int => $post->id, $posts);</pre>
    

    生成器:

    function make(array $input): Generator
    {
        foreach ($input as $item) {
            yield $this->doSomethingWith($item);
        }
    }
    

    php的性能

    php7的性能提升是php5的一倍以上。

    随着php的到来,伴随着JIT的使用,性能还会有巨大的提升。

    php框架

    php除了wordpress之外,还有众多好用的框架和社区。

    laravel,yii,ci,symfony这些都是非常优秀出色的框架。

    总结

    我希望我能够向您展示PHP在过去几年中的巨大发展,您完全能够用它编写干净且可维护的代码。

    尽管这门语言肯定有它的缺点和20年的传承,但我可以自信地说,我喜欢用它工作。

    根据我的经验,我能够创建可靠、可维护和高质量的软件。我为之工作的客户对最终的结果很满意,虽然使用PHP仍然有可能做很多乱七八糟的事情,但如果使用得当,我认为它是web开发的一个很好的选择。

    相关文章

      网友评论

          本文标题:PHP in 2020

          本文链接:https://www.haomeiwen.com/subject/akrfvktx.html