Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:92465 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 73924 invoked from network); 19 Apr 2016 14:35:47 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 19 Apr 2016 14:35:47 -0000 Authentication-Results: pb1.pair.com header.from=dmitry@zend.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=dmitry@zend.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain zend.com designates 65.55.169.133 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 65.55.169.133 mail-bl2on0133.outbound.protection.outlook.com Received: from [65.55.169.133] ([65.55.169.133:50027] helo=na01-bl2-obe.outbound.protection.outlook.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 0A/45-43496-04246175 for ; Tue, 19 Apr 2016 10:35:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=RWSoftware.onmicrosoft.com; s=selector1-zend-com; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=WfvvN3nUYeqO0gUVKkWXwg7Jbd9pToAHAHbrPzbwF0Q=; b=ob8aOj2L4azP18ffSJ66Yfw1hG3vCEyBkz4uVLufJlRaVNmmaG94MnRSJO9ISfTXJPOlH80osrHiadnizmH0J29hSRs9JT1XFiFAzddB2DpuF+//AHQ3Cefqtx2kERWlMD+nOx9qkCwH6qX05+wgMMiZK6nNXmdvH8Y7S+k4XJQ= Authentication-Results: lists.php.net; dkim=none (message not signed) header.d=none;lists.php.net; dmarc=none action=none header.from=zend.com; Received: from tpl2.home (92.62.57.172) by BLUPR0201MB1779.namprd02.prod.outlook.com (10.162.239.13) with Microsoft SMTP Server (TLS) id 15.1.466.19; Tue, 19 Apr 2016 14:35:38 +0000 To: Nikita Popov , Joe Watkins References: CC: PHP internals Message-ID: <5716422F.5070102@zend.com> Date: Tue, 19 Apr 2016 17:35:27 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [92.62.57.172] X-ClientProxiedBy: CO2PR06CA036.namprd06.prod.outlook.com (10.141.242.36) To BLUPR0201MB1779.namprd02.prod.outlook.com (10.162.239.13) X-MS-Office365-Filtering-Correlation-Id: 3598306e-7106-47b2-f645-08d3685fe179 X-Microsoft-Exchange-Diagnostics: 1;BLUPR0201MB1779;2:vTp37OhEP/YHGYBT2R1uvayANZjlyhhHNgVoYjdi6F+sheeA8aXDoFMqDWZ+w+jwdd1DxphEoywzMrL37PKP0PL5MUqAJYhPqjOYxL13u4DybBcpDyFCcMsQ2ClX94MlKz3pzzHlLAd11ghHyQa4fzUioE2ZYQjnkxvJngtMCSwbdYur+JTjHxaFqmVZ3F5U;3:LJ88qFZYvWSBdh8JsZrYFBgsWrXxABUXZRaVEb5L1IWEKDGAYzS0A83qMdJpcY3eqJ9jO2EQ7O5ZCjbpcYHkThUvW8cacfYQPxBbCxb4YvWgovzBfeuo5YJL0YisFem+ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR0201MB1779; X-Microsoft-Exchange-Diagnostics: 1;BLUPR0201MB1779;25:82Kb29P5yTt7xAXe3UJxNEPhlRnpDdrXDLKTwy7U/jP2nnb6X/16e7h+9d1KeMfl0dwxZLMFwllA1bwguV/Wwo/zOrzZgHVzssGP7KLFinyEOOktplo2HuzBheFvjwjfhbErP+hOxbgp1TYBBMcfUIRcpUqRwOUtwVYus3tsdrYNQejkpgDOvkUtlW9YgNsoZ+VkSnp5we3QSFDlq2igz22oKl7sh2rPSPcfasvO3XbVaJ6irzkEAw3VhoYenRc2NWe0Da8dk+Gg4chnBAwrvNneyJXiCIoWFbicw9yN3nudDWSQOVyCt2EXxKH5EKjLlqiuYUiTBk71b2y2vjFppk85AvbzkSVYcVjOu5wo5s5r6tphSIOefbkep0+thAptkYTySOBW30Yr+xnx6X2KbO9Tsqy3iH3p6E6G/f83NNrM+oeDR84LWpwgeuAANGr5FyG2tYeFBCp+OfGSW5IaZ0XYHwNjCaoVkCR4u2QMBFzS8U+SSUyPESBIR+kzkDcnf+AlOF5GwEGgO5apa9AR+mZeOxOXf2P4GpaZ+Amr+Wm9+vfKKIz0igHSaNOka5uY9hrn4aTpoSkeLEOxXpRAZCw86ZemXP15ZJV+HMeGqA+ARvCFBxgGA3vju73jLOcx9jmu+BvHqk5Aa+sdGh73KbOkIvp+PGNHtyVD+l875X1DZZssWvOfw6uPhfI6gw+MeH94Jub2Rk57L2oH1rfmnEsvyVYkBHGqCxULpVaatJ4= X-Microsoft-Exchange-Diagnostics: 1;BLUPR0201MB1779;20:fjTBvnXTtxW6qxkfK3+zvUiumbGA5xso0ZCQtZDsN413WUryMGzMd90DGQlVRiPMTeA+rQIA06B/mSaMzyMJbDkuc3AtX1N3TYpk8W1v+awYtziglUjBstornojMh5htKua4AfJpj1BOM4QiIz11Hjn2r67BNsdJzOpyv/YnIjwI7J6popy/lE5COJFdDYUv2aAk2llBfExeQgSptYiMr1yVB6x6b2hWGOxc5gH4x0X36sH6cyN1jUNul5mei7ip6YgUijaPOuBNQHSMJCxHmOHIX69oNAd/rLe8K+C+oLZazS2IprEyW7amP8Op1VYBb0IeF018Q71WjjAsz0efv09v5TsUhkzFhORb7Nnw/1eRmgCLsotvt4fxCSp4x0gBE47MPOqYjS6VWX7MGlJXd6JwTwsmO3t8gGgh08L/x7sQs54gZkvBNpQs1SaqJVSz5KehpW3crEdz1Wm8EnV8rRzom4L4MQXEdBO2C4pzLSfnD+rM3AanrR9fIviSjAPP;4:HGSOYHLQpzmNKKSBlfT67VFjfWR6eCLn5ONbvllidlGMh2v57wZHuegywB1uy7aphxDiNUq7rQxqRqOLtWNraSbMmjJXiqJ8T2gC2r4Bkg2a2bmcAJB5IaWtyGRg/tiS09ox5HUJac66sRqJtwgqAzNYt02r3rzxdMXM5AYebxOk/6OcwJVWkD93kF4w1SOCr4AhrAhYZU2JVd+b/UpnXXfzkkyiMxBm8ubup2PGTM3sSL40xtb/HKIkdPExqmI90GA1yzKLxNyonxxqNrgotamTRHaPZUQfrdIS2bj1BcXOFwhUe7JcT4/s8pH/6+Dm4vzwXJaVWNPeZbhxHdL2vvU0TjC85anunaxFN5CnVCYgQm3L3rrPpdC50mW9wKSrmuqa/ew9IozOPYeoyoSjsw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(9101521026)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001);SRVR:BLUPR0201MB1779;BCL:0;PCL:0;RULEID:;SRVR:BLUPR0201MB1779; X-Forefront-PRVS: 0917DFAC67 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(377454003)(85644002)(24454002)(42186005)(586003)(1096002)(6116002)(36756003)(2906002)(23676002)(87266999)(50466002)(19580405001)(54356999)(99136001)(81166005)(76176999)(189998001)(77096005)(3846002)(50986999)(47776003)(65816999)(5008740100001)(5001770100001)(33656002)(15975445007)(65956001)(64126003)(66066001)(230700001)(92566002)(86362001)(83506001)(80316001)(59896002)(4326007)(2950100001)(5004730100002)(19580395003);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR0201MB1779;H:tpl2.home;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTFVQUjAyMDFNQjE3Nzk7MjM6ME8zbTBXeXR6aktZcDE2Z2Jpa2NleHc5?= =?utf-8?B?OUlIVmpjU00yWGdmZzVmS0prbXhxT0QrdjdXWkhyc3QvUjZyYndHREZna0o3?= =?utf-8?B?dmJyMHI0akxLRlVhaFhFTk5ZSzJQWEs3TFE3ekF3YXZuWHA4TWZnTGR0RmNs?= =?utf-8?B?TEx6TmM3UVhMRU1VdjVXQ1M3N0lQVC9KeGk2eWdWVTFZMnNvYXhVS0JiRmdy?= =?utf-8?B?TGxUdVB2N0FVdTRBeVFmR0h2YXRiZm9SK3lzUHpmOG9LNHJVblA3TEp3aDZ1?= =?utf-8?B?cTZzS2hEY3RWRVpQZU1rK1lnakNzcVNFY1U2TUM3WTF4cmUzWGd3SXVEQWxV?= =?utf-8?B?R1UyZHlqTlVJaFJ6V0FKWlArTW93ZlB3WEtQUm1NNXNEWFZnWjBGcVZwSEZu?= =?utf-8?B?bTYrM0YrTzNTY0lnNGZMOXpKNDlDcXN4VDBEWVJqUEUwZHQzU0czMVpDZytX?= =?utf-8?B?YWIxMU9ndmhOazcwSHlaU0tUWGFPTlUwT2JxNVY1TGh0TlJ2R0xvYjZsU045?= =?utf-8?B?ZDBhR1Z2WUVidjV4YkJoSmV0Wldtb3Y2dEc4dTdsSEN4YUVIaXhoWUU1Y1Bo?= =?utf-8?B?TjlwOVpIcyt1eS9YUkprQXBGL1FBKzV5MFRybDh4emhldDZJVStHRHFBNll6?= =?utf-8?B?M3VkMURJbW9SYWVkRmpkamwwQjdqT2FRY29sN2xZanlnTWt6dFM3QmZIY2Ez?= =?utf-8?B?WnBnWU1WeW5tbUNteFdjNlFxVVZWWjM5VVpZOTRwN0ROTlpTclMwOHlMWGJa?= =?utf-8?B?MUxDd1J1dndoT2VRM0ZaRWhueVVHZnh0NVF3bitpNlI5T0xCcXJVNnBjK1c5?= =?utf-8?B?c0lOU0tMbytZc1FCMzdKSFRPMEtYeTVRbkJhQVZZaUVucWtHcktCUktYaU95?= =?utf-8?B?OU1CT1F6elp3WVRsYW4rTGhmVEJNUHhuV085TkhXcEo0QWdZNm81eFJpK2ZR?= =?utf-8?B?ZFBTcHZadkJ1NzZ6SGMxUElIUWE1TEJiS0FmWDBTaVkrNE92SW5uVEFpTUhG?= =?utf-8?B?WjFoM3RYemhtNGtoQkMzZzZTSG10aGNQeXpiYW1ERWVoQ0M4aDJLNCt0WGNI?= =?utf-8?B?YjVpRHZQd2lRanBuVzU1REJaekJHbTFTTXJ1MlNjVWpteHMxVmZNbzJJV1NQ?= =?utf-8?B?NFRKWlNnYytUb2ZPUmVCY0VtcWhPQzNnVGMwcjdiMlcvdExjekw5SjZVUW9L?= =?utf-8?B?enAwZm1laFZ0Vi9JNWxzVHcyWVFZUjdDYXdmMnppY0g2c1h2c2RLdTZBUzQv?= =?utf-8?B?UU41aCtyeVIvNjBFdGZMdHpsNDR2L013N01sME5aWndIaEtzSEdhb0dtbUJ0?= =?utf-8?B?bXZqaEJlaGk4TXhVK1dMajErU21BbFJYUE5pSlNJTXFuMWV1UkRISmRMV2hJ?= =?utf-8?B?VFJrVGJGR3FFTm1zd1prMTQzYnlUY3Q0eDJYWWROWGRNRVRDclhIcDhVbDNH?= =?utf-8?B?bnRQa2ZLL0JlakM1MnROek45VjdWRi9PZkJ0MXFWZUlRRnhibUIxRXRUY0Fn?= =?utf-8?Q?nEzTmoLzbpwvkeYeP/Yl9N29ozA=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR0201MB1779;5:EjQF01Cx+6gVkxKd/DD21CeAQTaBe1sX91A+OuICY2d24ZOl8krAI5mh3UIxKP5cqZXN4JWU2d2u9x+7iFu44ZMl3TcKP8KVVDjMk7pPjWhkb+ptvQkc99Jx0Gac9kbb66YzjV/Bcc4ssKX+eMHhMhGSSQMqnfaCE+fWx8YEyKBxh2czfdrneOGY/rmecTFq;24:sO9coQ8bSB3MT4Bx8W4ceuH5XiVTmLj3sSwVTSt0acU3mMVr95HuGSQREHmYzACWNca4eBgdZqNSpbLeHFq9kyDywnkSlT1w5Je5Az2OfMU=;7:tl0Ck+hWa8prY78lBFs1my2yTBJ6sCGW5CPocJqzq5ZFnQ3qCq70VxppWSD1A0qDjSo8XE3MdAU68yggAff7gSCD6064wifyHjW/PJjxpC+M/0dMhMs8xgrrTaluhohMO0uyg9jAI9+T9Aun7dFOJe9xxpFo/oJaieU8b3l/ExmZismM5XAZQhz3ZEGCm7jPbge4x8E8USTq4452wwhat6CYouSDnL3pgoebPuUdK5o= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: zend.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Apr 2016 14:35:38.2013 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0201MB1779 Subject: Re: [PHP-DEV] RFC: Anonymous Class Lexical Scope From: dmitry@zend.com (Dmitry Stogov) On 04/19/2016 05:18 PM, Nikita Popov wrote: > On Tue, Apr 19, 2016 at 3:31 PM, Joe Watkins wrote: > >> Morning Internals, >> >> Please review the following RFC: >> >> https://wiki.php.net/rfc/lexical-anon >> >> A look at the patch from those of you that do that would be good :) >> > Hey Joe, > > The syntax and semantics proposed in this RFC don't sit quite well with me. > Especially the fact that a use($foo) on the class is then used as > $this->foo in methods is non-intuitive to me, as it differs from how the > same syntax behaves on closures. I'd like to suggest an alternative syntax: > > $foo = 42; > return new class { > private $bar = $foo; > public function getBar() { return $this->bar; } > } This syntax is definitely better, less magic and more powerful. > > That is, allow properties inside the anonymous class to be initialized > based on values from the surrounding scope. This is more explicit (clearly > shows that a property is being created), it allows explicit control over > the visibility and, depending on implementation, might be more flexible > with regards to the values it accepts. It probably doesn't make sense to > restrict this to specific expressions, so all of > > return new class { > private $a = $var; > private $b = $obj->prop; > private $d = $obj->prop ?? 'default'; > // ... > } > > could be fine. Is this for anonymous classes only? Only for property default values or something else? Also, instead of lexical scoping, we may use generic approach. return new classprop,C=$obj->prop ?? 'default'> { private $a = A; private $b = B; private $d = C; }; But good design of generics would take a lot of ... Thanks. Dmitry. > > Thanks, > Nikita >