Re: PHP 8.4

JEFFRY KILLEN <[email protected]> Wed, 18 Dec 2024 11:25:29 -0800
Newsgroups gmane.comp.php.general
Message-ID <[email protected]>
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 <[email protected]> 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 <[email protected] <mailto:[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
>>