Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:102216 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 13232 invoked from network); 10 Jun 2018 18:41:50 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 10 Jun 2018 18:41:50 -0000 Authentication-Results: pb1.pair.com header.from=zrhoffman@ku.edu; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=zrhoffman@ku.edu; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain ku.edu designates 104.47.42.95 as permitted sender) X-PHP-List-Original-Sender: zrhoffman@ku.edu X-Host-Fingerprint: 104.47.42.95 mail-by2nam03on0095.outbound.protection.outlook.com Received: from [104.47.42.95] ([104.47.42.95:39142] helo=NAM03-BY2-obe.outbound.protection.outlook.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id AF/16-62758-CE07D1B5 for ; Sun, 10 Jun 2018 14:41:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kansas.onmicrosoft.com; s=selector1-ku-edu; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TQvYX2M/KLBDVddVRA56hWdcN41cgZB0vmZOE3/0K8I=; b=jgqxWtlKahRH+5xXs/H7EKL/VxlF6ckPnXVA4CK4GYKUyip4QTGPpoVi95N8QExl4JkLbBAGoZ1L8t9nDVEvdWT0T0h3CtQvl+Cxpcdm1JCmwpZEi0KJAENZ5acLPPkzHoiKtwKNNgghTn7rFNY+/8EkitDE1eEIjmtRYenjTpU= Received: from SN2PR01CA0010.prod.exchangelabs.com (2603:10b6:804:2::20) by CY4PR01MB2664.prod.exchangelabs.com (2603:10b6:903:de::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.841.17; Sun, 10 Jun 2018 18:41:44 +0000 Received: from BN1BFFO11FD001.protection.gbl (2a01:111:f400:7c10::1:103) by SN2PR01CA0010.outlook.office365.com (2603:10b6:804:2::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.841.14 via Frontend Transport; Sun, 10 Jun 2018 18:41:44 +0000 Authentication-Results: spf=pass (sender IP is 129.237.34.13) smtp.mailfrom=ku.edu; lists.php.net; dkim=none (message not signed) header.d=none;lists.php.net; dmarc=bestguesspass action=none header.from=ku.edu; Received-SPF: Pass (protection.outlook.com: domain of ku.edu designates 129.237.34.13 as permitted sender) receiver=protection.outlook.com; client-ip=129.237.34.13; helo=ex13-csf-cr-13.home.ku.edu; Received: from ex13-csf-cr-13.home.ku.edu (129.237.34.13) by BN1BFFO11FD001.mail.protection.outlook.com (10.58.144.64) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.820.5 via Frontend Transport; Sun, 10 Jun 2018 18:41:44 +0000 Received: from ex13-ell-cr-11.home.ku.edu (129.237.207.21) by ex13-csf-cr-13.home.ku.edu (129.237.34.13) with Microsoft SMTP Server (TLS) id 15.0.1293.2; Sun, 10 Jun 2018 13:41:43 -0500 Received: from ex13-ell-cr-11.home.ku.edu ([::1]) by ex13-ell-cr-11.home.ku.edu ([::1]) with mapi id 15.00.1293.006; Sun, 10 Jun 2018 13:41:43 -0500 To: Gabriel Caruso , Dmitry Stogov CC: PHP Internals Thread-Topic: [PHP-DEV] [VOTE] Make compact function reports undefined passed variables Thread-Index: AQHUAOoDDd3lD3Xhf0aP6++wx3M38Q== Date: Sun, 10 Jun 2018 18:41:43 +0000 Message-ID: <1528656103200.14318@ku.edu> References: , In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [129.237.14.19] Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:129.237.34.13;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10019020)(346002)(376002)(39380400002)(39860400002)(396003)(2980300002)(438002)(189003)(199004)(53546011)(7596002)(5660300001)(66066001)(23756003)(36756003)(186003)(47776003)(117636001)(5250100002)(478600001)(88552002)(356003)(59450400001)(246002)(4326008)(102836004)(106466001)(2900100001)(2906002)(39060400002)(305945005)(8676002)(26005)(76176011)(110136005)(7736002)(7696005)(446003)(75432002)(786003)(316002)(11346002)(97876018)(6116002)(8746002)(486006)(126002)(476003)(8936002)(3846002)(50466002)(2616005)(336012)(426003)(106002)(229853002)(86362001)(6246003);DIR:OUT;SFP:1102;SCL:1;SRVR:CY4PR01MB2664;H:ex13-csf-cr-13.home.ku.edu;FPR:;SPF:Pass;LANG:en;PTR:ex13-csf-cr-13.home.ku.edu;MX:1;A:1; X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD001;1:FXdgvcMFJq+fVI/4D8jndVRvGqCI8nFpMN9vsdsLVUUmPCjDVAFOvlJaTgSYi2KJQSlUy55HIL0Ih4S2pI4SPLMv4lz8CY+wyVO4hj22x/s0mJYWS/r7jgnu3ZbhMd5E X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020095)(4652020)(5600026)(4608076)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);SRVR:CY4PR01MB2664; X-Microsoft-Exchange-Diagnostics: 1;CY4PR01MB2664;3:s31rPanJiOM3vI04fInRhIV2vd6ggFnSypcpQOMx8YKUhuD1M1uxbFMaY9sa9UNQtm6A0dxdkNrisvQoIj0N1LpoF/qt3jnM4LpZL4evNdJdRm9tdCsdrF35mEI+MM4PRVjxSN0iYh5o1IzqiLOzV+c+x6fTZwW6C7B6Z+q6HWArRaFdMquu14WnodmMGXF4yTrDQp4BUtx6Op905zI3RX9KqxziVRic/ZYjbtBzYnFE9YxHg22A4/TdDHTuUE5DewUae63Tu1kcJMPJmJiB5LvSUsDGY0jNOt2vG4xnsJinbL0gvZ9d1IVzZ1+7NxIErX/zj90kguQ6fED/O+pW0hy/Dzzqr3Bd1FMRDqZWPlc=;25:bzBvWOS0cyPGFEH/IfM7yEUBM9Qb0lAEJkt370oH4wdG1TnD+3T5f+EW6FpyUYFVDykwBtsAcEWKP89hX0onaV6kZ7FILd5NgluL5LT5OEMuGu7gXHRf6pM9iyZnrxRKsPjS42Q+QeyfLn+NxMvOmX6/6axFIuAYgysmF3oAiSDK9D+UPTUtjKGiEDmlhN4xj+++cbkimSf/XRffM6c85EppTdSJFnW/zE4pj8ATw3hTbKjilKHadT/tG6f8WPCon3Blqja8tsyIf6LuZ5ojIdGoIossLAYEDaUnFMX0sPdx79Eb9ZuNvXffa7BIH29qyJAGAY4ZubokGlqWEb9JfQ== X-MS-TrafficTypeDiagnostic: CY4PR01MB2664: X-Microsoft-Exchange-Diagnostics: 1;CY4PR01MB2664;31:1HPrXIXNEhIY7iLVRNuGQLm92WKQnDOWFJWQ2V1oEmYQlJE5vQTFHeTz2Km9mwml6a+RZEMXgpgF3uzgebKpQuw3529lWbxr5748OR3lnvNmbOKaXyBY66xfOKUAHjcgqjnqIHmsEfB3j7wDvZgsNJL1eEYla6DsCKHaP42oGkjtmtdEQLdZbJNIuRqHSZIvheSIOYYj/c7F+7xhQM2t27Xt2ZYlydYlXivj69hD2z0=;20:XQLXO/uxsSMFiqXscM+mni1uskZKOZB3o1upDo1mK420RWoC8pHZxbV31RzDOSKtPTv/gy9PExcSwmTJps44guvslgcU3Lrf/0Hfv71uv1DZbxdvlVIzUr0EyY0g+Ddtl7PyMRfIV7Ir5JlavulPr1pF30d06reKdY9NTtKgktAm32jG05fzIjtyQmNIL/2gaNhUUKDwEVFMnNsz7mXsWf/z03Ap021+2wftp+X9GSV6bGPbPa0FSbd0UT360ChMUCcUCgLPhY5ERIiIOmFIQRMNbgv4b3sQYFbxl4eQtjG98O4Y3oEAQ9qfPs/eOZpBLAyAIWDHJrtCMjB+edMV2TnSsYST4JhupiNnXlrs1yD6PL3JmXQ5kLiz22x0j547ep8TDu4XihnjlYuxW6gIOTf7f8UDi9f/hSDXRpkxi+YRDPVRTebFk1V2FKOs3VmmgKO4YDKiNjLCpJGhZLVaLwEHs7JDMxhzRlRFF4jzTqd0UmXrfRrMyOik7F4fTTmA X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(20558992708506)(131327999870524)(85827821059158); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93004095)(10201501046)(3002001)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(201703131423095)(201702281529075)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123558120)(20161123564045)(6072148)(201708071742011)(7699016);SRVR:CY4PR01MB2664;BCL:0;PCL:0;RULEID:;SRVR:CY4PR01MB2664; X-Microsoft-Exchange-Diagnostics: 1;CY4PR01MB2664;4:xoc74xFBlfxIhcEus8I4wfOS4ivvU1mgYZseJ5oPswzvESpnGqHgtyQhySuaex6cXqAX5OEmWyaSnnv6/88bq0RyK97oCAV39cH2jB27hOqI5ZV5DB4gc0GdL7WFh2urMT6N3e/zKnl+YwEDcuzBKEXDoXOHkikRlz1kfuPMIEN7AxmqU9mu4Fnb9C8E2TvqIMwWf0euuxRqpuUUUcr0xGb2cyGZp/4gmGtAa6D0ZgjNPa9m66i/gkuNjhjQxHyAoGPvbqW9ZDZTls1nr5S7bkfpO4C6ixFcwwrkxHsbHHkk+q5nRNj+2OVgH5rj8kZvQTtYS4PP7afNGq8Kfu5zNEh8TwVT3LPknxj29s/lZg7MQcRDXJeShuZ8Mn7P+gwc X-Forefront-PRVS: 0699FCD394 X-Microsoft-Exchange-Diagnostics: =?iso-8859-1?Q?1;CY4PR01MB2664;23:0vfCI7fuN+wTJuvr4cZsHnki7bzTNQ0Ku8zjDYh?= =?iso-8859-1?Q?bTXtGJPsLNxeDconN5QV9HTmpIXj5WXMoR6TKH+dPU4JB4AKeCi2YrdiIY?= =?iso-8859-1?Q?eWrhfB3Pg88i9dhb6UZfcsrQZ0iuye1rq2XPFGMk7ACp/T98DExhYHicIy?= =?iso-8859-1?Q?uCGwA5Z1d4rJGEAGa3E8l1b3Z0v8AwYJCzHI+zvfRzJ4Az6PN6AMfyBimC?= =?iso-8859-1?Q?NzndchdRS9BZ3ibQjxkX5U50+sHF8JIUiSpmJQwqb0Gv4M36cZ0lEx13XW?= =?iso-8859-1?Q?7N9tUoHKgQYr1+QJjYWUeX7aufONilixqdH5ELxeK4ZlHssggVgkHoZcRS?= =?iso-8859-1?Q?qh8A7CU/hls/g2ubU8wKwx2mN2cJDNdGsEGYJ1tH6+xZ8UtWWmT2JxSVeI?= =?iso-8859-1?Q?UP2DkkdB8IEFobmBhDwJGg3KbpUYcFaJwNlKhF0sk1Wpb8Zh/IXouoYBzQ?= =?iso-8859-1?Q?BYuyGVfhaFwgC833LuaIM/qFhH2MO2C10uLc0fsNGFbndfIFaKnv2Oz7L0?= =?iso-8859-1?Q?IM8FrSqzAMalLvQVlXP8ZKLEGOUEOzI5nG7LeJm74/1DCpVQidR3AgOQ/t?= =?iso-8859-1?Q?/SLA9sWNWEdHiKXYCV2cMkTOLB83/eXHhsssV7qbJPm1gdC4BGxFQs378M?= =?iso-8859-1?Q?Q4HhZKThyGHVuqNZwnQrFgWnLMbROcJWKJV9Epwi3mEv6ygyErx7TJB8Nx?= =?iso-8859-1?Q?PiS29gWf391zJKQcjJeuGO9rWGLeXDvsPQu57951AAC7INUJLGc22qbPar?= =?iso-8859-1?Q?+N76UDDg7ONw6N18sEbsI3pWG6CiW7CilJLoAJUo+SWGNnhqeDzMZ1Y04Q?= =?iso-8859-1?Q?/VwMFPbZIBG4MuUaclaahwJtmj8j8ARmpR9kWaa1uDtbQkkWoONHDc/wgZ?= =?iso-8859-1?Q?buBQ7BnJDNWk2Dr2nxN9cefKlVn+5gw0QRbdBFi0RajwIKY3Zj4gjHCMlq?= =?iso-8859-1?Q?yFwAXHRcfmBCoGHh32C0dFIYhP9ZtNZP3ZpmolaYUbqRD6mTw1B3g1S0BP?= =?iso-8859-1?Q?Lg4nw07YsmY//OMk9wE9Lrx/uxFMic08DCJY+j+gSsBqlyWfXBA3hKoNuc?= =?iso-8859-1?Q?Ny//fvxac5WXpsb5FVPcWE8JPMgc/ib4OHkVBd47gAxNh2hf8mjK/egiUr?= =?iso-8859-1?Q?Mn+KWeKF0vlCNiGbQiPi4xR06y/DPADOr02HRO57bsPaGtofoeF++XDZ9J?= =?iso-8859-1?Q?ZbFNCI2mhtZHNwfcdH1XhuV1ycxeRQAEVZ6m7DECQjzXKH2WwZU9Gd8H2T?= =?iso-8859-1?Q?jTbLYostnA418L2/eFeRJJVyGmOsR4XNF4wujo3t42FKgOP3jzwENcTUZS?= =?iso-8859-1?Q?3QUS4kS4u5DsKqM/xQ2bdDh4nVIRKMY9V1leHwoAd26Sg=3D=3D?= X-Microsoft-Antispam-Message-Info: yF88OAOrZ8gErCk0rkFBGQi7tYphzroQ98kOdP60ehlVhavIHPLPlONsrnC1WF1PGS/uJPhZ1Yybys7fFhMVF86DVetdT2xn5ZTyN//TGoyX6CzwsS05D4IA4lu3F8GFzD5rQt+jvygx0qDElYQxjoHGk0XEMT2pDOGDLBlkVCRKIn710N+OI8SSqo85gQPg X-Microsoft-Exchange-Diagnostics: 1;CY4PR01MB2664;6:pKjx3o5exM+s3rfzTN2AO9c3tz6CPSXWSHdT4jpIyyeWWja1YwHdkmfgi1zadPY5vKwwh0uDB4IiImOYtAUx9XZQpa1FVNOLpkNgcDCktSr8P/7RysgxLz/YVJWrn9sRKs4aLFzQ8FhkQAJW9XXqWkBViOw98wBncbt0ZCvdGb0unTMHzhJxYJEh1WHGnr8WsvTTgDFPrvQ/UlYigrl/HJKpJbNFAMfblPPlLa4cAoT4/fg4DnupdtPPih2Z1YIMZszAA4A5/5yEKJqXtO2JbvzXwQ+4/1gPMixmG+ITx8Z7i2JQie5m3odnFhHYgjHj1p7vhLY6oi1r+jzO3YM3Zb21PNUmp2dplpoiuRpLt8PJAD/+fBrWfuCZQzZ+8Lyy+PQpq4vyJF8yzjPgcA73x0bK1scNgyYVSOtWl3yorVTibHnt8RYwXH+nvZ1AX78nu+Pzsnc2SGsgZlhIh6IzKA==;5:Th2ZY+OzcYzEVOZrCtiuZDCRfx9WOjSFhK0gRRzwhDbjW3FnCPP92H2ae1KoQGWqzfCJ8XIG8eprVdj15u+4TEBjoKL2xK4avIDeB7ZwRHy2LrMMuZhZo7Nw+wKg+sD8tBO6e/XZqg/5Z9ONJvbPT1ZHaUdhC1RnYiffc3bMfKA=;24:myp0pAENnspuuv3uP99CPVIeG4RSbg+SJS1E6YBVbJs0KS6WfhyBbGkyP9I9IqXWwPUAmiD52MRZztinwUV2FwjRKA7lhkIJBDaAbneVRac= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR01MB2664;7:7eL0q/Vrx/HfqRK1khdgqz6P/VBMiBoByTCTCGpwXtC3e1RU/q5907/kGBjQtcmSz7jI/6uR30V8Q6z5zueMm5bKAfjmbCV2nfVllb2VPPqImzmtjsjJSbv8sL8JOuPrq4F+EZPfxwb/aiEctLCDWhzuOtRYIsB32IPHFRgk4KDmJ4Q071uHNefChJdFDj9xMYvD6fxbre1sybRFvv1348Vn/DVlffuLQCERUKWtOohKAnVEt1DgIP+b98vdPs9b X-MS-Office365-Filtering-Correlation-Id: 33c7c9ab-62d5-4914-442e-08d5cf01d09e X-OriginatorOrg: ku.edu X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2018 18:41:44.3339 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 33c7c9ab-62d5-4914-442e-08d5cf01d09e X-MS-Exchange-CrossTenant-Id: 3c176536-afe6-43f5-b966-36feabbe3c1a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3c176536-afe6-43f5-b966-36feabbe3c1a;Ip=[129.237.34.13];Helo=[ex13-csf-cr-13.home.ku.edu] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR01MB2664 Subject: Re: [PHP-DEV] [VOTE] Make compact function reports undefined passed variables From: zrhoffman@ku.edu ("Hoffman, Zachary Robert") >>=0A= >> Hi Gabriel,=0A= >>=0A= >>> compact(), extract(), parse_str() (with 1 argument) and=0A= >>> get_defined_vars() are bad functions, because they access local variabl= es=0A= >>> indirectly.=0A= >>>=0A= >>> They might be considered to be removed in the next major PHP version,= =0A= >>> despite of this fix.=0A= >>>=0A= >>>=0A= >>> Thanks. Dmitry.=0A= >>>=0A= >>>=0A= >>=0A= >> Hello Dmitry.=0A= >>=0A= >> Thanks for this feedback. When I decided to create this RFC adding a=0A= >> warning, many of friends actually suggested me creating an RFC depractin= g=0A= >> `compact`, and complaing with the same arguments as yours.=0A= >>=0A= >> Do you think we should do this already in PHP 7.3?=0A= >>=0A= >> Thanks.=0A= >>=0A= >--=0A= >Gabriel Caruso=0A= =0A= Deprecating compact() would hurt workflows where you use the same variable = names=0A= several times in different contexts, even though they are only declared loc= ally=0A= for the purposes of compact() itself.=0A= =0A= Below is an example of what I mean. The array used for compact() is the sam= e one=0A= that is iterated over outside of class A. Further, we use the variables tha= t are=0A= compacted earlier in A::c(), so it is convenient to use them as local varia= bles.=0A= =0A= class A=0A= {=0A= private static $b =3D [=0A= 'a',=0A= 'b',=0A= 'c',=0A= 'd',=0A= ];=0A= =0A= public static function b()=0A= {=0A= return self::$b;=0A= }=0A= =0A= public function d()=0A= {=0A= return 2;=0A= }=0A= =0A= public function c()=0A= {=0A= $d =3D $this->d();=0A= $a =3D pow($d, $d + 1);=0A= $c =3D $a ^ 0b1100;=0A= $b =3D $a - $d;=0A= =0A= return new B(=0A= compact(=0A= $this->b()=0A= )=0A= );=0A= }=0A= }=0A= =0A= class B=0A= {=0A= private $a;=0A= =0A= public function __construct($a)=0A= {=0A= $this->a =3D $a;=0A= }=0A= =0A= public function a(string $name)=0A= {=0A= return $this->a[$name];=0A= }=0A= }=0A= =0A= $a =3D (new A())->c();=0A= =0A= foreach (A::b() as $b) {=0A= echo $a->a($b) . PHP_EOL;=0A= }=0A= =0A= The alternative would be manipulating array elements directly, like this:= =0A= =0A= public function c()=0A= {=0A= $e['d'] =3D $this->d();=0A= $e['a'] =3D pow($e['d'], $e['d'] + 1);=0A= $e['c'] =3D $e['a'] ^ 0b1100;=0A= $e['b'] =3D $e['a'] - $e['d'];=0A= =0A= return new B($e);=0A= }=0A= =0A= That is far more cumbersome. So, compact() has legitimate uses sometimes.= =0A= =0A= Cheers,=0A= =0A= --=0A= Zach Hoffman=0A= ________________________________________=0A= From: Gabriel Caruso =0A= Sent: Saturday, June 9, 2018 12:25=0A= To: Dmitry Stogov=0A= Cc: PHP Internals=0A= Subject: Re: [PHP-DEV] [VOTE] Make compact function reports undefined passe= d variables=0A= =0A= >=0A= > Hi Gabriel,=0A= >=0A= >> compact(), extract(), parse_str() (with 1 argument) and=0A= >> get_defined_vars() are bad functions, because they access local variable= s=0A= >> indirectly.=0A= >>=0A= >> They might be considered to be removed in the next major PHP version,=0A= >> despite of this fix.=0A= >>=0A= >>=0A= >> Thanks. Dmitry.=0A= >>=0A= >>=0A= >=0A= > Hello Dmitry.=0A= >=0A= > Thanks for this feedback. When I decided to create this RFC adding a=0A= > warning, many of friends actually suggested me creating an RFC depracting= =0A= > `compact`, and complaing with the same arguments as yours.=0A= >=0A= > Do you think we should do this already in PHP 7.3?=0A= >=0A= > Thanks.=0A= >=0A= --=0A= Gabriel Caruso=0A=