PHP 7 对 PHP 进行了巨大改进

PHP 在我心目中有一个不好的形象。(这是我个人的感受)

你是否认为PHP有一种不太好的印象?

我以前也是这样的。

当我还是学生的时候,我使用Java、Scala和Ruby。我在就业后接触到PHP。即使我现在是学生,我也不会学习PHP,而是会学习Python和Go。

然而,使用PHP开发的Web应用程序非常广泛。 PHP具有大量方便的功能,专为Web应用程序而设计。

另外,从 PHP 7 开始,在类型方面有很多改进,与以前的 PHP 相比,有了天翻地覆的变化。

为什么 PHP 有一个负面形象?

为什么许多人讨厌 PHP 呢?我认为原因在于它的“非严格比较运算符 ==”。

在PHP 8中,这个比较运算符的变化成了话题。

【PHP8.0】现在的松散比较运算符==行为将会有所变化。

在这篇Qiita文章的例子中也提到了,

"true" == 0    // true => PHP 8 からはこれが false に
0 == "0"       // true
"true" == "0"  // false

这个的奇特之处在于,”true” == 0,而且 0 == “0”,但是 “true” == “0” 得出的结果却是 false。这就是一个 A = B 且 B = C 的情况,但却没有满足 A = C 的不协调之感。

“true” == 0 为什么会变成true?这是因为当试图将字符串转换为整数时,如果字符串不是以数字开头,则被转换为0。

(int)"true"    // 0
(int)"100"     // 100
(int)"100abc"  // 100
(int)"abc100"  // 0

这个在 PHP 的文档中也写了。

这个演员的行为在 PHP 8 中没有改变。只是修复了等于号的行为。

PHP 的混乱类型比较表可以说是非常出名的。我认为看过一次会觉得很有趣。

我会不自觉地想要一个进行详细比较的表格。

PHP 7 带来了许多改进之处

函数的参数、返回值和属性等,现在可以写上类型了。

class Something
{
    private int $id;

    public function setId(int $id)
    {
        $this->id = $id;
    }

    public function getId(): int
    {
        return $this->int
    }

}

或许与过去相比,你会觉得这真的是 PHP 吗?但事实就是,这就是现在的 PHP。

虽然 == 的行为一如既往地不变,但类型开始变得更加严谨,一旦写得正确,我开始感觉它是一种非常易用的语言。

PHP 8 PHP 8

在PHP 8中,还添加了许多功能。

空安全运算符

image.png

联合类型等

class Number {
    public function getSomething(): int|float
    {
        // int または float を返す
    }
}

有许多方便的功能被添加上去。

PHP的优点

毫無疑問,這是一種專注於網頁的語言,擁有其他語言所無法比擬的許多功能。

以下のようなHTML文字列をエスケープする関数があります。

htmlspecialchars('<html>')  // &lt;html&gt;

生成一个查询字符串的函数。

http_build_query(['a' => 1, 'b' => 2])  // a=1&b=2

只需要一种选择,将以下内容改写为中文: 一个将数据转换为JSON格式的函数。

json_encode(['a' => 1, 'b' => 2]);  // "{"a":1,"b":2}"

获取日出时间的函数以及其他(用于什么呢)

$now = time();
date_sunrise($now);  // 04:30

只要涉及到关于网络的函数,就有诸如这样的东西。对于开发Web应用程序非常方便。

剩下的事情,由于有很多用户使用,网上有很多知识可以参考,这真是太好了。只要搜索一下,大多数问题都可以解决。

PHP 的不足之处

我实际上长年使用 PHP,但总体来说,执行速度无法与编译语言相比。PHP 7 提升了相当多的速度。PHP 8 采用了 JIT 编译,预计会进一步提高速度,但由于不擅长异步处理,它仍然较慢。

在公司的新人培训中,我们使用Scala开发了应用程序,也用Scala制作了https://lgtmoon.dev/,尽管服务器非常脆弱,但依然能够获得相当高的性能。

由于对Scala的了解太少,现在的话我会选择Go。如果那时Go很出名的话,我相信我会选择Go。

总结

虽然写得有点啰嗦,但是与以前相比,我认为 PHP 已经变成了一门相当好的语言,所以我建议大家不要对它进行过多的批评,不妨亲手去尝试一下。

广告
将在 10 秒后关闭
bannerAds