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
>>