TGViewer
The Fly's PHP - Делаем из Мухи Слона The Fly's PHP - Делаем из Мухи Слона @flyphp · 414 subscribers
Post #94 833

Forwarded from Пых (Валентин Удальцов)

В PHP 8.5 наконец-то будет clone with!

Как-то незаметно в PHP 8.5 приняли долгожданный RFC https://wiki.php.net/rfc/clone_with_v2.

1. Клонирование теперь не только языковая конструкция, но и функция clone(object $object, array $withProperties = []): object. Благодаря этому можно писать array_map(clone(...), $myObjects).

2. Вторым аргументом можно передать новые значения свойств для склонированного экземпляра. Переопределить можно любые видимые в текущей области свойства, в том числе readonly, что наконец-то даёт нам полный инструментарий для работы с иммутабельными структурами:


final readonly class Request
{
public function __construct(
public string $path = '',
public array $headers = [],
) {}

public function withPath(string $path): self
{
return clone($this, ['path' => $path]);
}

public function withHeader(string $name, string $value): self
{
return clone($this, ['headers' => [
...$this->headers,
$name => $value,
]]);
}
}

new Request()
->withPath('/phpyh')
->withHeader('Content-Type', 'application/json');


Почему это важная фича и как без неё обходиться прямо сейчас, подробно рассказал Brent Roose в ролике 📹 Cloning Readonly Classes in PHP 8.2.
____________

До конца завтрашнего дня билеты на Пых.конф’25 всего по 12 000 рублей!
  • 👍 6
  • 🔥 5
  • ❤ 2
More from @flyphp
  1. Sep 10, 2026🐘 Пыхник’26 - целая неделя PHP! С 28 сентября по 2 октября собираемся на Пыхнике’26 - онл…
  2. Sep 10, 2026Post #105
  3. Jul 8, 2026Первый официальный State of PHP опрос открыт: https://jb.gg/php-survey-2026 В сообществе у…
  4. Jun 2, 2026Вышел TrueAsync 0.7.0, краеугольная версия, которая определяет необходимый API для асинхро…
  5. May 23, 2026В конце 2025 года проводился ежегодный опрос русскоязычного PHP-сообщества. Результаты опр…
  6. Jan 15, 2026🚀 Большой ежегодный опрос по PHP 🐘 🤘 Присоединяйся и помогай комьюнити становиться толь…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →