Re: PHP 8.4
| From: | Vivien Goncalves | Date: | Wed, 18 Dec 2024 18:53:13 +0000 |
| Subject: | Re: PHP 8.4 | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-328585@lists.php.net to get a copy of this message | ||
Hello,
Didn't know or forgot this. After verification and if I'm correct,
recursion during comparison appears when PHP compares 2 objects. Infinite
recursion can appear when one of the objects compared references himself.
Example :
class RecursiveObject {
public $self;
public function __construct() {
$this->self = $this;
}
}
$obj1 = new RecursiveObject();
$obj2 = new RecursiveObject();
try {
$result = $obj1 == $obj2;
} catch (Error $e) {
echo "Une erreur a été capturée : " . $e->getMessage();
}
Which results in PHP 8.3:
> PHP Fatal error: Nesting level too deep - recursive dependency? in
> /var/www/html/api-spotify/public/test.php on line 14
> PHP Stack trace:
> PHP 1. {main}() /var/www/html/api-spotify/public/test.php:0
>
And in PHP 8.4 :
> Une erreur a été capturée : Nesting level too deep - recursive dependency?
Regards,
Vivien Goncalves
PHP Developer "Open To Work"
Le lun. 9 déc. 2024 à 03:20, JEFFRY KILLEN <jekillen@prodigy.net> a écrit :
> Hello;
>
> I do not see much activity on this list these days. Has it gone elsewhere
> mostly?
>
> Anyhow I am looking at the online manual, specifically the deprecations.
>
> I see a heading:
>
> Recursion during comparison ¶
>
> <https://www.php.net/manual/en/migration84.incompatible.php#migration84.incompatible.core.recursion-comparison>
>
> Encountering recursion during comparison now results in an Error
> <https://www.php.net/manual/en/class.error.php> exception
> instead of a *E_ERROR
>
> <https://www.php.net/manual/en/errorfunc.constants.php#constant.e-error>*
> fatal
> error.
>
>
> I need some more information on the idea of Recursion during comparison:
>
> I have written a recursive function that walks the file system and can be
> programed to respond to files and directories.
>
> I its simplest form it just produces a file system mapping. But it can be
> used to delete, rename, and other operations.
>
> Does recursion during comparison apply to this? (examples possibly?)
>
> In truth I have a working function that does not normally produce E_ERROR..
> So I presume my question is partially answered.
>
>
> Thank you for time and attention
>
> JK
>