Re: array_key_exists BC break

From: Date: Tue, 28 Oct 2008 14:00:20 +0000
Subject: Re: array_key_exists BC break
References: 1 2 3 4 5 6 7  Groups: php.internals 
Request: Send a blank email to internals+get-41519@lists.php.net to get a copy of this message
While we're at this and considering the new lambdas that we now have in the language I must say I'd like some functions to support Traversables. Those would be: array_map(), array_reduce(), array_filter(), array_walk() and array_walk_recursive() Although I'd rather want a class (because the array_* functions don't adhere to some strict param order standards) to provide functional style methods, like those in Javascript 1.8: https://developer.mozilla.org/index.php?title=En/New_in_JavaScript_1.6#section_2 https://developer.mozilla.org/index.php?title=En/New_in_JavaScript_1.8#section_4 Array.forEach() Array.map() Array.filter() Array.reduce() Array.reduceRight() Array.some() Array.every() In PHP something like this would be nice: $processedDirectoryIterator = SplFunctional(new DirecotoryIterator(__DIR__)).map(function() {
    // do stuff here
}); where SplFunctional is a function returning a SplFunctional object whose construcor accepts iteratable structures (arrays or Traversables) and $processDirectoryIterator is a DirectoryIterator resulted after applying the lamba to each of the SplFileObjects contained. I know right now we have FilterIterator as an equivalent to array_filter() for Iterators and we could implement our own Functional classes but that means a new class for situations where a simple lambda could do the job just as well. I hope my proposal makes sense. P.S. I introduced a SplFunctional function just to skip the instantiation of the object. On 10/28/2008 15:16, Lars Strojny wrote:
Hi Andrei, Am Montag, den 27.10.2008, 11:34 -0700 schrieb Andrei Zmievski: [...]
I would say "no" for 5.3. But for 6 it would be fantastic to have all array-related operations supporting ArrayAccess interface, where possible.
     
+1 for this. cu, Lars


« previous php.internals (#41519) next »