PHP is a popular general-purpose scripting language that powers everything from your blog to the most popular websites in the world.
www.php.net
Денес имаше release на PHP 8.4
Новини во јазикот:
1. Property hooks - место да се дефинираат посебно пропертиња на класа, посебно гетер и сетер методи за тие пропертиња, имаме 3 в едно
PHP:
class BookViewModel
{
public function __construct(
private array $authors,
) {}
public string $credits {
get {
return implode(', ', array_map(
fn (Author $author) => $author->name,
$this->authors,
));
}
}
public Author $mainAuthor {
set (Author $mainAuthor) {
$this->authors[] = $mainAuthor;
$this->mainAuthor = $mainAuthor;
}
get => $this->mainAuthor;
}
}
се елиминира многу boilerplate и кодот е поелегантен
2. Asymmetric visibility - од сега за гет пропертито може да се дефинира ко public, а за сет ко private и protected
PHP:
class BookViewModel
{
public private(set) Author $author;
}
3. Директно повикување на метод од класа при инстанцирање објект без употреба на загради
место ова
PHP:
$name = (new ReflectionClass($objectOrClass))->getShortName();
сега го имаме ова
PHP:
$name = new ReflectionClass($objectOrClass)->getShortName();
4. array_find() - многу корисна функција која на некој начин е спецификација на array_filter(). Првиот аргумент е низата, вториот аргумент е колбек функција, у суштина работи исто ко array_filter() разликата е што ќе ти ја врати првата вредност за точниот услов од колбекот, додека array_filter() ќе ти ги врати сите елементи. Има и array_find_key(), array_find_any(), array_find_all() - првата ќе ти го врати клучот место вредноста, втората ќе врати булиан дали било кој елемент од низата го исполнува условот, третата ќе ти врати булиан дали сите елементи го исполнуваат условот од колбекот.
5. Implicit nullable types deprecated
Ова не
PHP:
function save(Book $book = null) {}
Ова да
PHP:
function save(?Book $book = null) {}
мора експлицитно да се означи аргументот со прашалник дека е nullable
6. New HTML5 support
Ова е way overdue, нова нативна класа која правилно парсира HTML5
PHP:
$doc = \Dom\HTMLDocument::createFromString($contents);
7. Object API for BCMath
објектно ориентиран код за BCMath екстензијата
PHP:
use BCMath\Number;
$num = new Number('1');
$num2 = new Number('2');
$result = $num + $num2;
$result->value; // '3'