PHP - quelle est la niche du langage et PHP8 aidera-t-il à résoudre les problèmes urgents (spoiler: IMHO pas)

class Number {
    private int|float $number;

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

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

Dans l'un des numéros du podcast Zinc Prod , nous avons brièvement discuté des nouveautés de PHP8. Après l'enregistrement, j'ai décidé d'écrire un article pour formuler mes réflexions sur la position de PHP dans le développement moderne.

Déterminons en général quelle niche la langue occupe / occupe et où elle se déplace

Initialement, la langue était positionnée comme un outil simple , qui, dès la sortie de l'emballage, a tout ce dont vous avez besoin pour le Web .


D'une part, cela est vrai: sans bibliothèques supplémentaires, par exemple, vous pouvez extraire les paramètres de demande POST de la variable superglobale $ _POST et les insérer dans mysql en utilisant les fonctions intégrées, et cela semble être génial.


Il est également très important que le modèle «né pour mourir» (par exemple, en php-fpm) simplifie et simplifie le développement à la folie: vous n'avez pas besoin de savoir quels verrous, blocages, fuites de mémoire, etc. Pas besoin d'écrire attendre avant chaque ligne de code, etc.


Le script a commencé à travailler sur une requête HTTP entrante, a fonctionné dans un processus distinct, sans parler à personne, et est mort, effaçant tout après lui-même. Très facile à programmer. Le seuil d'entrée est proche de zéro.


, : — .


, , . .



: , , 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