php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #77135 Extract with EXTR_SKIP should skip $this
Submitted: 2018-11-10 10:27 UTC Modified: -
From: thflori at gmail dot com Assigned:
Status: Closed Package: *General Issues
PHP Version: 7.2.12 OS: Manjaro
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
MUST BE VALID
Solve the problem:
36 - 1 = ?
Subscribe to this entry?

 
 [2018-11-10 10:27 UTC] thflori at gmail dot com
Description:
------------
I know that get_defined_vars() is not returning $this but for every developer it feels like a variable that is currently defined inside an object context.

As you can never overwrite $this - even outside an object context it would make sense that the extract function always work as $this is defined and use the appropriate method (skip/prefix).

Test script:
---------------
<?php

$arr = ['this' => 'hello world'];
extract($arr, EXTR_SKIP);
extract($arr, EXTR_PREFIX_INVALID, 'v_');

var_dump($v_hello === $arr['this']);

Expected result:
----------------
bool(true)

Actual result:
--------------
PHP Fatal error:  Uncaught Error: Cannot re-assign $this in /tmp/test.php:4
Stack trace:
#0 /tmp/test.php(4): extract(Array, 1)
#1 {main}
  thrown in /tmp/test.php on line 4

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2019-06-07 08:51 UTC] dmitry@php.net
Automatic comment on behalf of dmitry@zend.com
Revision: http://git.php.net/?p=php-src.git;a=commit;h=83cdb89f8a6cbc656f2f95aeb6ce1c97691e197f
Log: Fixed bug #77135 (Extract with EXTR_SKIP should skip $this)
 [2019-06-07 08:51 UTC] dmitry@php.net
-Status: Open +Status: Closed
 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Mon Sep 16 06:01:27 2019 UTC