Re: PHP 8.4

From: Date: Wed, 18 Dec 2024 19:25:29 +0000
Subject: Re: PHP 8.4
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-328586@lists.php.net to get a copy of this message
So, what I get from this is that what is troublesome is the possibility of an endless loop? When I wrote my recursive file system walking function every time it enters a directory it bypasses . (self) and .. (parent dir) listings via a switch statement... Note: the use of $_ in every variable name is my own practice. It helps me visually to spot variable references in code. $_list = scandir($_targetDir); for( $_i = 0; $_i < count($_list); $_i++) { switch($_list[$_i]) { case '.': case '..': // add other case labels representing file names that should be bypassed break; default: // process every other item in the list // recursion comes when a directory is encountered and the loop enters and begins the next level. // the looping ends when the end of a directory listing is reached and all of the included directories have been processed // it pops back to a higher level and continues there. Eventually the whole file tree has been processed. break; } } > On Dec 18, 2024, at 10:53 AM, Vivien Goncalves <phedras.ch@gmail.com> wrote: > > 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 > <mailto: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 >>

« previous php.general (#328586) next »