On Sep 15, 2017 11:22 AM, <ilija.tov...@me.com> wrote: Hi!
The `extract` function takes an associative array and puts it into the local symbol table. http://php.net/manual/en/function.extract.php ``` $array = [ ‘foo’ => ‘foo’, ‘bar’ => ‘bar’, ]; extract($array); print $foo; // "foo" ``` As a second parameter the `extract` function takes some options to make this function less dangerous, like `EXTR_SKIP` that prevents an existing local variable of being overwritten. There’s a few more options, go ahead and take a look at the documentation. `EXTR_OVERWRITE` is the default one though. You can also pass a prefix for the variable names as a third argument. I seriously doubt the usefulness of this function, especially looking at the potential risks. The fact that overwriting the local variables is the default behaviour doesn’t make it any better. I suggest deprecating it in PHP 7.3 and removing it in 8. In a whole Symfony-Stack (3.4) with all of it’s dependencies I could only find two usages of this function, both of which could be easily rewritten in vanilla PHP: https://github.com/symfony/symfony/blob/master/src/ Symfony/Component/Templating/PhpEngine.php#L148 https://github.com/symfony/symfony/blob/master/src/ Symfony/Component/Templating/PhpEngine.php#L158 Only downside: A polyfill is probably impossible since you cannot mutate the local symbol table of the callee (as far as I’m aware). Any thoughts? I see no gain by removing this function. I've also seen it used for templating quite often. Yes the functionality could be changed not to use extract and end up working the same to the consumer but why make people rewrite these things for no apparent gain (and likely a small performance hit)? Regards