Description
Description
Reproduction
<?php
$reflection = new ReflectionClass('\DateTime');
$mutable = $reflection->newInstanceWithoutConstructor();
$immutable = \DateTimeImmutable::createFromMutable($mutable);
Resulted in this output:
Process exited with code 139.
The segfault happens when converting an "incomplete" \DateTime
to a \DateTimeImmutable
instance and vice versa.
Background
I stumbled upon this during some unit test writing where my testing framework was unexpectedly mocking \DateTime
objects for me. After debugging for a while I could narrow the cause down to the snippet above.
Solution
I'd love to attempt to provide a fix for this, but I am unsure as to the proper solution, implementation-wise: Should an error be thrown during the conversion, or during constructor-less creation of the reflection instance? Or maybe no errors at all and some "sane default" type of handling for creating DateTime
instances via Reflection? Are there any precedents in the implementation for other internal classes in regards to this? Thanks in advance!
PHP Version
PHP 7.4 - PHP 8.1
Operating System
No response