PHP: cuál es el nicho del lenguaje y PHP8 ayudará a resolver problemas urgentes (spoiler: en mi humilde opinión, no)

class Number {
    private int|float $number;

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

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

En uno de los temas del podcast Zinc Prod , discutimos brevemente qué sería nuevo en PHP8. Después de grabar, decidí escribir un artículo para formular mis pensamientos sobre la posición de PHP en el desarrollo moderno.

Determinemos en general qué nicho ocupa / ocupa el idioma y dónde se mueve

Inicialmente, el lenguaje se posicionó como una herramienta simple , que tiene todo lo que necesita para la web .


Por un lado, esto es cierto: sin bibliotecas adicionales, por ejemplo, puede extraer los parámetros de solicitud POST de la variable superglobal $ _POST e insertarlos en mysql usando las funciones integradas, y esto parece ser genial.


También es muy importante que el modelo “nacido para morir” (por ejemplo, en php-fpm) simplifique y simplifique el desarrollo a la locura: no necesita saber qué bloqueos, puntos muertos, pérdidas de memoria, etc. No es necesario escribir en espera antes de cada línea de código, etc.


El script comenzó a funcionar en una solicitud HTTP entrante, funcionó en un proceso separado, sin hablar con nadie, y murió, borrando todo después de sí mismo. Muy fácil de programar. El umbral de entrada es cercano a cero.


, : — .


, , . .



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