Re: Question about the difference between `glob` and `GlobIterator` behaviour
| From: | Stéphane HULARD | 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.
>