⭕️ Anonymous 19.08.2021 21:11 #1414
⭕️ 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 31.10.2021 21:51 #1975
⭕️ Anonymous 02.11.2021 07:45 #1987
⭕️ 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; }
}
⭕️ Anonymous 03.10.2024 15:26 #60098
блинб, теперь наткнулся на ситуацию, где такое было бы полезно ммммммм блядь!!
⭕️ Anonymous 03.10.2024 15:36 #60099
Чет шарпом воняет. Давно такое в PHP?
⭕️ Anonymous 03.10.2024 15:45 #60100
В PHP есть array_merge, но он сливает ассоциативные хеши с числовыми ключами так, что перенумеровывает их. Причём аналога данной функции, который сохраняет ключи - нет. Плак-плак.
⭕️ Anonymous 03.10.2024 15:49 #60101
Пиздёж! Простая контатенация сохраняет порядок ключей.
⭕️ Anonymous 03.10.2024 15:51 #60102
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');
и усё будет кайф.
Спасибо за внимание.
⭕️ Anonymous 13.02.2025 01:55 #64733
Алсо, смысл в том, что придётся явно вызвать конструктор класса SplFileObject и передать туда какой-то аргумент, в нашем случае - php://memory.
⭕️ Anonymous 13.02.2025 16:05 #64757
какой нахуй порядок в хешмапе лол
⭕️ Anonymous 13.02.2025 16:33 #64760
Массивы в PHP это классно, люби их!
⭕️ Anonymous 14.02.2025 14:47 #64782
если ваш массив - это не ArrayBuffer, то даже не зовите его дрюкать
⭕️ Anonymous 05.06.2025 15:27 #67690
Если какой-то ебанат ограничил принимаемый тип лишь Closure, а вам нужно передать любой callable, например, класс с магическим методом __invoke(), то можно сконвертировать текущий экземпляр в замыкание так:
$closure = \Closure::fromCallable($object);
⭕️ Anonymous 05.06.2025 15:46 #67691
Следует признать, однако, что в таком случае трассировочный вывод будет указывать лишь на строку с объявлением такового 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
https://php.watch/versions/8.5/pipe-operator
Добавили пайпы!
⭕️ Anonymous 22.12.2025 12:21 #1766391697577261
https://php.watch/versions/8.5/array_first-array_last
Добавили нового сахару: array_first и array_last. Хотя я бы назвал их ~_value, для уточнения. Увы!
⭕️ Anonymous 22.12.2025 12:24 #1766391858271526
https://php.watch/versions/8.5/boolean-double-integer-binary-casts-deprecated
Задепрекейтили длинные названия типов. Осуждаю.
⭕️ Anonymous 22.12.2025 18:46 #1766414760540586
а array->at(N) добавить низя? N=0 это first, N=-1 это last
⭕️ Anonymous 22.12.2025 18:49 #1766414996424110
Гринтекс, плз.
