¿PHP es relevante en 2021?

El enfoque se ha movido desde hace mucho tiempo de PHP a JavaScript y Python. Sin embargo, están saliendo nuevas versiones y las pruebas de rendimiento indican un buen progreso. ¿Qué tan relevante es PHP hoy? Debajo del corte: los pensamientos del desarrollador, que continúa dándole preferencia.





Una breve historia de PHP

PHP 1994 . , -, Personal Home Page Tools (« »). PHP Tools. , : . .





, open source 1995 . , PHP.





— PHP 8.0.





PHP?

— . , . PHP , . , . 





, . :





echo "1" + 3;
echo 1 + "3";
echo "1" + "3";
      
      



4, . , , .





, .





PHP 5.3. , . - . 





, , Payments_Provider_Processor_Provider_SomeExternalServiceProvider



, SomeExternalServiceProvider



. .





.





, , . , , , . , , , . .





:





  • strpos(string $haystack, string $needle, int $offset = 0): int|false



    : ;





  • strsplit(string $string, int $length = 1): array



    : ;





  • explode(string $separator, string $string, int $limit = PHP_INT_MAX): array



    : .





: str



, str_



, . $string



str_split



, explode



. — , .





— , , . - , $SERVER



$REQUEST



. : . . , , .





PHP?

, . PHP 7 , , .





Type hints

PHP: type hints, , . :





function isValueSomething($value) {}
      
      



type hints, :





function isValueSomething(string $value): bool {}
      
      



, , -. , , type hints , IDE .





7.4 PHP :





class Person {
    public string $firstName;

    public string $lastName;

    public int $age;

    public ?string $job;
}
      
      



, Person



, integer . — .





PHP :





  • : fn ($x, $y) => $x + $y;







  • : $value = $array['key'] ?? 'default value';







  • : return $cache['key'] ??= computeSomeValue('key');







  • : $first = ['a', 'b']; $second = ['c', 'd']; $final= […$first, …$second];







  • : array_fill(start_index: 0, num: 100, value: 50);







  • : 299_792_458







.





Constructor promotion

Person



:





class Person {
    private string $firstName;

    private string $lastName; 

    protected int $age;

    public ?string $job;

    public function __construct(
        string $firstName,
        string $lastName,
        int $age,
        ?string $job
    ){
        $this->firstName = $firstName;
        $this->lastName = $lastName;
        $this->age = $age;
        $this->job = $job;
    }
}
      
      



PHP 8 :





class Person {
    public function __construct(
        private string $firstName,
        private string $lastName,
        protected int $age,
        public ?string $job
    ){}
}
      
      



, ?





Nullsafe-

JavaScript, PHP . , PHP:





<?
if (is_null($repository)) {
    $result = null;
} else {
    $user = $repository->getUser(5);
    if (is_null($user)) {
        $result = null;
    } else {
        $result = $user->name;
    }
}
      
      



PHP null. nullsafe- :





$result = $repository?->getUser(5)?->name;







?





, , type hints. . :





function doSomething(int|string $value): bool|array {}
      
      



, PHP , .





, PHP . , PHP 7 PHP 5.6, , . Phoronix , PHP 8 PHP 5.6. , .





Kinsta WordPress. WordPress 5.3.





:





  • WordPress 5.3 PHP 5.6: 97,71 /





  • WordPress 5.3 PHP 7.0: 256,81 /





  • WordPress 5.3 PHP 7.1: 256,99 /





  • WordPress 5.3 PHP 7.2: 273,07 /





  • WordPress 5.3 PHP 7.3: 305,59 /





  • WordPress 5.3 PHP 7.4: 313,42 /





PHP 8, , 7.4 5.6, .





PHP , . Golang, PHP Python, PHP, . , , PHP . 





, , -, , , open source.





, PHP , . , , , , .








All Articles