php8

В седьмом похапе они сделали много хороших приятных вещей и прямо создавалось впечатление что ситуация налаживается, но, слава богам, на сцену выходит пхп8 который всё возращает на свои места.

Если вы смелый духом то можете ознакомиться самостоятельно: https://php.watch/versions/8.0


Union types прекрасны, теперь можно указать что переменная может быть private int|array|bool $var и это как раз то чего так сильно не хватало в пхп! Хотя подождите…

Зато добавили Special false type потому что очень здорово писать private int|false $var, но не добавили возможность писать private int|true $var. Спасибо!


The new preg_last_error_msg() returns a human-friendly error message, or "No error" (as string) if there were no errors.


\ValueError is a new Exception type that extends \Exception class, and from PHP 8.0, you will be seeing lots of them! \ValueError exception is thrown when a value encountered is of correct type, but it cannot be used to continue the operation.


New str_starts_with and str_ends_with functions
Multi-byte (mb_*) variants for str_starts_with() and str_ends_with() are not currently planned.


Добавили аттрибуты и хорошо, ведь phpdoc ещё не изобрели! И ещё мне очень нравится синтаксис — он такой понятный и удобный!

<<App\Annotations\FooAttribute>>
function foo_func(<<FooParamAttrib('Foo1')>> $foo) {}

PHP resources, such as Curl handlers, open files, database connections, can be cast to int. PHP 8 adds a new get_resource_id function that is essentially a (int) $resource cast to make it easier to retrieve the resource ID.

Я даже не представляю как можно было жить без этого!


Наконец-то создавать новые классы будет удобно, ведь раньше было совсем невыносимо это делать, указывать проперти, их видимость, теперь же можно делать это намного более лучше!

class User {
    private int $uid;
    private string $name;
    public function __construct(public string $name, int $uid) {
        $this->uid = $uid;
    }
}

Слава богам что они добавили проверку на излишний код и вот так нельзя делать (а то кто знает что могли бы натворить программисты в своем коде):

class User {
    public string $name;
    public function __construct(public string $name) {}
}

Восторг! Можно, пожалуйста, нет?

2020.07.21 18:46