PHP - apa niche bahasa dan akankah PHP8 membantu memecahkan masalah yang mendesak (spoiler: IMHO tidak)

class Number {
    private int|float $number;

    public function setNumber(int|float $number): void {
        $this->number = $number;
    }

    public function getNumber(): int|float {
        return $this->number;
    }
}

Dalam salah satu masalah podcast Zinc Prod , kami membahas secara singkat apa yang akan menjadi baru di PHP8. Setelah merekam, saya memutuskan untuk menulis artikel untuk merumuskan pemikiran saya tentang posisi PHP dalam perkembangan modern.

Mari kita tentukan secara umum ceruk apa yang diduduki / ditempati oleh bahasa, dan ke mana ia bergerak

Awalnya, bahasa diposisikan sebagai alat sederhana , yang di luar kotak memiliki semua yang Anda butuhkan untuk web .


Di satu sisi, ini benar: tanpa pustaka tambahan, misalnya, Anda dapat mengekstrak parameter permintaan POST dari variabel superglobal $ _POST dan menyisipkannya ke mysql menggunakan fungsi bawaan, dan ini sepertinya hebat.


Juga sangat penting bahwa model "terlahir untuk mati" (misalnya, dalam php-fpm) menyederhanakan dan menyederhanakan pengembangan menjadi kegilaan: Anda tidak perlu tahu apa kunci, deadlock, kebocoran memori, dll. Tidak perlu menulis menunggu sebelum setiap baris kode, dll.


Script mulai bekerja pada permintaan HTTP yang masuk, bekerja dalam proses terpisah, tanpa berbicara dengan siapa pun, dan mati, membersihkan semuanya setelah itu sendiri. Sangat mudah diprogram. Ambang entri hampir nol.


, : β€” .


, , . .



: , , SPA- .. php 10000 : php-fpm worker . 10000 .


, , ReactPHP, Swoole, Amphp, , PHP. , . , Swoole 5? ? (Go nodejs) php .


: Go , , . nodejs , async/await Promise. .


PHP- - ReactPHP? !


, , . API . GRPC- php 100500 . .


, PHP .


. , PHP, HTTP- β€” . API, β€” . .. io-bound PHP , nodejs/golang/etc.



. , , $_POST mysql_query. 99% , Composer, .., , , . .. - . Spring boot (java) : , .


, ?


β€” - (.. Golang ) . PHP β€” . , -, , , ..


-, . , . β€” . , , IDE , .


. , Collection , Collection<User>, .. "". .


PHP 8


. PHP8. , β€” JIT, .


JIT


. .. , , - , .


-? , … -, . , . , PHP . C, C++, Rust . .. PHP7.* PHP5 β€” . PHP , Ruby Python. PHP , - JIT PHP php-.


, , . - Async/await Promise.



PHP8? .
-, Symfony



    /**
     * @Route("/blog")
     */
    public function list()
    {
        // ...
    }

- :



    <<Route("/blog")>>
    public function list()
    {
        // ...
    }

, , . - , . . . , , .


Union Types mixed


, |


class Number {
    private int|float $number;

    public function setNumber(int|float $number): void {
        $this->number = $number;
    }

    public function getNumber(): int|float {
        return $this->number;
    }
}

. .


, PHP8 mixed .


Big deal? .


Weak maps


Weak maps β€” . ,



, - , . - .


, , .


-, PHP7.4 .



, β€” . :


PHP β€” () . , .


, β€” . PHP8 . , - nodejs/go .


" ", .


All Articles