Re: Question about the difference between `glob` and `GlobIterator` behaviour

From: Date: Thu, 24 Mar 2016 09:29:04 +0000
Subject: Re: Question about the difference between `glob` and `GlobIterator` behaviour
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-325488@lists.php.net to get a copy of this message
Hello Jim, Aziz and thanks for your answer :) So the glob function is “just” a linux’s glob porting with all it’s features and the Iterator is a more strict (regarding to RFCs) implementation of the glob feature… We made some benches and did not spot a huge difference between an Iterator combination and a simple glob call. The specific glob features are activated by some flags so I think it’s not a big problem to does not have them when using only the GlobIterator. Have a nice day Stéphane Stéphane HULARD Directeur technique & CEO CH Studio - Collectif digital 2 rue d'Italie - 38490 Les Abrets Phone: +33 (0)6 18 18 65 04 www.chstudio.fr > On 23 Mar 2016, at 23:32, Aziz Saleh <azizsaleh@gmail.com> wrote: > > > > On Wed, Mar 23, 2016 at 6:12 PM, <lists@cmsws.com> wrote: > On 2016-03-23 02:28, Stéphane HULARD wrote: > Hello ! > > I’m currently working on the Hoa Project (http://hoa-project.net) about > a glob behaviour integration: > https://github.com/hoaproject/File/pull/22 > > We found that there are some difference between the glob > function and the > GlobIterator object. > > 1. glob > This function is able to scan only dirs with the GLOB_ONLYDIR constant > and is also able > to expand braces to match in a list of items with GLOB_BRACE. > > Exemple with glob(‘/{a,b,c}/foo/bar’, GLOB_BRACE), it’ll search : > - /a/foo/bar > - /b/foo/bar > - /c/foo/bar > > 2. GlobIterator > This object has no options or constants to apply the same logic than > GLOB_ONLYDIR and GLOB_BRACE. > It’s possible to combine different iterators and obtain the same > result but it’s a lot more > complicated. > > Exemple with new GlobIterator(‘/{a,b,c}/foo/bar’), it’ll search : > - /{a,b,c}/foo/bar > > Is there some reason about the differences in these two implementations ? > I found that the braces expansion is not part of the “official” glob > pattern definition but > it’s definitively an awesome feature. > > Thanks in advance for your attention. > Stéphane > > Stéphane HULARD > Directeur technique & CEO > CH Studio - Collectif digital > 2 rue d'Italie - 38490 Les Abrets > Phone: +33 (0)6 18 18 65 04 > www.chstudio.fr > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > By no means do I pretend to have any insight to the internals of PHP, but if I > were to take a guess, I would say that the functionality of the glob was initially > modelled after the glob'ing ability found in most all *nix cli tools from years > past. > > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > > Jim is spot on, glob was indeed modeled after linux's glob function (as many of PHP's > earlier functions like copy, rename, etc..): > > http://man7.org/linux/man-pages/man3/glob.3.html > > Which is why many (but not all) flags are similar in name and functionality. > > The GlobIterator class on the other hand is more powerful and offers better usage imo, however > it is not available except on v >= 5.3. The difference comes naturally with any improvements on > any language. newer functionality doesn't always match the old, specially when the old are > still usable side by side. >

« previous php.general (#325488) next »