Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:57262 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 97710 invoked from network); 7 Jan 2012 09:31:24 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 7 Jan 2012 09:31:24 -0000 Authentication-Results: pb1.pair.com smtp.mail=sebastian@php.net; spf=unknown; sender-id=unknown Authentication-Results: pb1.pair.com header.from=sebastian@php.net; sender-id=unknown Received-SPF: unknown (pb1.pair.com: domain php.net does not designate 93.190.64.33 as permitted sender) X-PHP-List-Original-Sender: sebastian@php.net X-Host-Fingerprint: 93.190.64.33 mail-3.de-punkt.de Received: from [93.190.64.33] ([93.190.64.33:57240] helo=mail-3.de-punkt.de) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 90/C0-25923-9E0180F4 for ; Sat, 07 Jan 2012 04:31:23 -0500 Received: (qmail 23181 invoked by uid 511); 7 Jan 2012 09:31:18 -0000 Received: by simscan 1.4.0 ppid: 23177, pid: 23179, t: 0.0511s scanners: attach: 1.4.0 Received: from unknown (HELO ?0.0.0.0?) (sb%sebastian-bergmann.de@217.114.76.105) by 0 with ESMTPA; 7 Jan 2012 09:31:18 -0000 Message-ID: <4F0810E7.2050904@php.net> Date: Sat, 07 Jan 2012 10:31:19 +0100 Reply-To: internals@lists.php.net Organization: PHP Development Team User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111222 Thunderbird/9.0 MIME-Version: 1.0 To: internals@lists.php.net Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: "Cannot use $this as lexical variable" message still in PHP 5.4 From: sebastian@php.net (Sebastian Bergmann) While c(); }; } } compiles as expected with PHP 5.4, the following c(); }; } } results in Fatal error: Cannot use $this as lexical variable in ... This is because void zend_do_fetch_lexical_variable(znode *varname, zend_bool is_ref TSRMLS_DC) /* {{{ */ { znode value; if (Z_STRLEN(varname->u.constant) == sizeof("this") - 1 && memcmp(Z_STRVAL(varname->u.constant), "this", sizeof("this") - 1) == 0) { zend_error(E_COMPILE_ERROR, "Cannot use $this as lexical variable"); return; } is still in zend_compile.c. IIRC, this code was added in PHP 5.3 to prevent $this from being used as a lexical variable. It should no longer be required in PHP 5.4. Right? -- Sebastian Bergmann Co-Founder and Principal Consultant http://sebastian-bergmann.de/ http://thePHP.cc/