Re: PHP 8.4

Vivien Goncalves <[email protected]> Wed, 18 Dec 2024 19:53:13 +0100
Newsgroups gmane.comp.php.general
Message-ID <CAD+tfgy2eF6yEmvSTSJqagaRLxzcBeGui-xkf6fhsyv09Kzufw@mail.gmail.com>
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 <[email protected]> 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
>