В седьмом похапе они сделали много хороших приятных вещей и прямо создавалось впечатление что ситуация налаживается, но, слава богам, на сцену выходит пхп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
andstr_ends_with
functions
Multi-byte (mb_*
) variants forstr_starts_with()
andstr_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