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@xxxxxxxxx> 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"
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 ¶Encountering recursion during comparison now results in an Error exception instead of a 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
|