Re: [RFC] Deprecate the extract function in PHP 7.3

From: Date: Fri, 15 Sep 2017 17:26:11 +0000
Subject: Re: [RFC] Deprecate the extract function in PHP 7.3
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-100638@lists.php.net to get a copy of this message
Heya, This is typically used in templating engines. The one I worked on is https://github.com/zendframework/zend-view/blob/5523511b6771cb6c060a77f6777426526a8db5ab/src/Renderer/PhpRenderer.php#L491-L492 Marco Pivetta http://twitter.com/Ocramius http://ocramius.github.com/ On Fri, Sep 15, 2017 at 7:20 PM, <ilija.tovilo@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? > > Regards > > >

« previous php.internals (#100638) next »