Тред #1414

⭕️ Anonymous 19.08.2021 21:11 #1414

Ответы:
>>1987

⭕️ Anonymous 26.08.2021 11:41 #1448

https://wiki.php.net/rfc/deprecate_dynamic_properties

В PHP хотят отменить динамические свойства классов. Я - за! Хуй пойми зачем может понадобитбся свойство с произвольным названием у класса, ещё и в публичной области видимости.

Не, можно класс сделать как описание какой-нибудь JSON-структуры, реализующей \JsonSerializable - удобнее типа формировать ответ/парсить запрос произвольной структуры. Но хз, ебля чото прям.

⭕️ Anonymous 05.10.2021 01:29 #1699

Про реализацию RFC 6265bis в PHP есть статья.

⭕️ Anonymous 06.10.2021 02:13 #1736

Сочинил регулярку для даты рождения человека сегодняшнего, типа клиента: https://regex101.com/r/eQGojt/1

⭕️ Anonymous 06.10.2021 04:12 #1737

⭕️ Anonymous 25.10.2021 13:28 #1926

post media

⭕️ Anonymous 31.10.2021 21:51 #1975

⭕️ Anonymous 02.11.2021 07:45 #1987

>>1414

https://3dnews.ru/1052714/vo-mnogih-kompilyatorah-nashli-uyazvimost-kotoraya-pozvolyaet-pryatat-vredonosniy-kod-v-ishodnikah

> Атака основывается на том, как компиляторы обрабатывают Unicode-идентификаторы, используемые для определения ориентации текста (слева направо или наоборот). Слабым местом является алгоритм Unicode Bidi, который позволяет совмещать написанные справа налево и слева направо слова. Например, благодаря этому алгоритму можно сочетать слова на арабском и английском языках. Он также позволяет написанный справа налево текст считывать слева направо и наоборот.> В некоторых случаях установленного алгоритмом Bidi упорядочивания недостаточно для переключения порядка отображения групп символов и в таких случаях используются специальные управляющие символы. Переопределение Bidi делает возможным отображение даже отдельных символов в порядке, отличном от их логического кодирования.

⭕️ Anonymous 15.12.2021 08:11 #2188

https://blog.wyrihaximus.net/2021/12/async-and-await-at-the-edge-with-reactphp/

Напоминание о том, что в PHP есть await & async.

⭕️ Anonymous 20.12.2021 11:34 #2205

https://github.com/CodelyTV/php-ddd-example

Пример DDD на PHP. Хочу чуть позже устроить ревью на весь чан, ибо на работе уже набил руку о такое.

⭕️ Anonymous 26.09.2024 03:50 #59812

Сегодня я вам расскажу о будущих хуках свойств.

Хуки свойств или property hooks - механизм определения логики получения и установки свойств класса, при этом избавляя от необходимости реализовывать специальные методы.

Как пример, рассмотрим данный листинг:


readonly class Track

{

public string $fullName {

get {

return $this->artist . ' - ' . $this->song;

}

}

public function __construct(

public readonly string $artist,

public readonly string $song

) {

}

}

$track = new Track(artist: 'ash', song: 'yeah');

echo $track->artist; // asher

echo $track->song; // yeah

echo $track->fullName; // asher - yeah

Для хука можно использовать и стрелочные функции:


readonly class User

{

public string $fullName {

get =>  $this->artist . ' - ' . $this->song;

}

...

Аналогичным образом будет выглядеть и хук set:


class User

{

public string $artist {

// Явно устанавливаем значение свойства

set(string $artist) => ucfirst($name);

}

...

Можно ещё короче:


readonly class Track

{

public string $fullName {

get => $this->artist . ' - ' . $this->song;

}

public function __construct(

public string $artist {

set (string $name) => ucfirst($name);

},

public string $song {

set (string $name) => ucfirst($name);

}

) {

}

}

А ещё можно и писать такие контракты:


interface IOther

{

// Ожидается публичное получаемое свойство 'fullName'

public string $fullName { get; }

// Ожидается публичное получаемое свойство 'firstName'

public string $artist { get; }

// Ожидается публичное устанавливаемое свойство 'lastName'

public string $song { set; }

}
Ответы:
>>60098
>>60099

⭕️ Anonymous 03.10.2024 15:26 #60098

>>59812

блинб, теперь наткнулся на ситуацию, где такое было бы полезно ммммммм блядь!!

⭕️ Anonymous 03.10.2024 15:36 #60099

>>59812

Чет шарпом воняет. Давно такое в PHP?

Ответы:
>>60102

⭕️ Anonymous 03.10.2024 15:45 #60100

В PHP есть array_merge, но он сливает ассоциативные хеши с числовыми ключами так, что перенумеровывает их. Причём аналога данной функции, который сохраняет ключи - нет. Плак-плак.

Ответы:
>>60101

⭕️ Anonymous 03.10.2024 15:49 #60101

>>60100

Пиздёж! Простая контатенация сохраняет порядок ключей.

Ответы:
>>64757

⭕️ Anonymous 03.10.2024 15:51 #60102

>>60099

https://wiki.php.net/rfc/property-hooks

Будет с 8.4. Синтаксис и правда не шибко PHP-шный, но после именованных аргументов функций я начал привыкать к такому.

⭕️ Anonymous 18.01.2025 07:00 #63917

https://wiki.php.net/rfc/new_without_parentheses

баля наканецта сделоли

⭕️ Anonymous 13.02.2025 01:54 #64732

Нельзя с помощью PHPUnit взять и замокать SplFileObject так же просто, как мокается всё, типа $this->createMock(MyService::class);.

Но можно сделать такое:


/** @var SplFileObject|MockObject */

$file = $this->getMockBuilder(SplFileObject::class)

->setConstructorArgs(['php://memory'])

->getMock();

$file->method('getExtension')->willReturn('mp3');

$file->method('getPathname')->willReturn('/home/user/umechan/data/music/1.mp3');

$file->method('getFilename')->willReturn('1.mp3');

и усё будет кайф.

Спасибо за внимание.

Ответы:
>>64733

⭕️ Anonymous 13.02.2025 01:55 #64733

>>64732

Алсо, смысл в том, что придётся явно вызвать конструктор класса SplFileObject и передать туда какой-то аргумент, в нашем случае - php://memory.

⭕️ Anonymous 13.02.2025 16:05 #64757

>>60101

какой нахуй порядок в хешмапе лол

Ответы:
>>64760

⭕️ Anonymous 13.02.2025 16:33 #64760

>>64757

Массивы в PHP это классно, люби их!

Ответы:
>>64782

⭕️ Anonymous 14.02.2025 14:47 #64782

>>64760

если ваш массив - это не ArrayBuffer, то даже не зовите его дрюкать

⭕️ Anonymous 05.06.2025 15:27 #67690

post media

Если какой-то ебанат ограничил принимаемый тип лишь Closure, а вам нужно передать любой callable, например, класс с магическим методом __invoke(), то можно сконвертировать текущий экземпляр в замыкание так:


$closure = \Closure::fromCallable($object);

Ответы:
>>67691

⭕️ Anonymous 05.06.2025 15:46 #67691

>>67690

Следует признать, однако, что в таком случае трассировочный вывод будет указывать лишь на строку с объявлением такового callable.

⭕️ Anonymous 18.08.2025 20:31 #69163

Кто придумал все выводы ошибок при выполнении подавлять и скрывать за специальными ключами аргументов для включения их в вывод, используя свежие версии phpunit - я того рот ебать хотел. Пидарас ёбаный, неужели нельзя было прикрутить тогда ключ --display-all какой-нибудь? Указывай теперь всегда от 7, нахуй, ключей.

⭕️ Anonymous 09.09.2025 06:30 #69591

Словил на работе dirty read при паралелльных транзакциях к СУБД. Даже не знаю, кто я.

⭕️ Anonymous 22.12.2025 12:18 #1766391527381550

Ответы:
>>1766391697577261

⭕️ Anonymous 22.12.2025 12:21 #1766391697577261

>>1766391527381550

https://php.watch/versions/8.5/array_first-array_last

Добавили нового сахару: array_first и array_last. Хотя я бы назвал их ~_value, для уточнения. Увы!

Ответы:
>>1766391858271526
>>1766414760540586

⭕️ Anonymous 22.12.2025 12:24 #1766391858271526

>>1766391697577261

https://php.watch/versions/8.5/boolean-double-integer-binary-casts-deprecated

Задепрекейтили длинные названия типов. Осуждаю.

⭕️ Anonymous 22.12.2025 18:46 #1766414760540586

>>1766391697577261

а array->at(N) добавить низя? N=0 это first, N=-1 это last

Ответы:
>>1766414996424110

⭕️ Anonymous 22.12.2025 18:49 #1766414996424110

>>1766414760540586

Гринтекс, плз.