Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:92031 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 54476 invoked from network); 30 Mar 2016 20:15:52 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 30 Mar 2016 20:15:52 -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.144 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 65.55.169.144 mail-bl2on0144.outbound.protection.outlook.com Received: from [65.55.169.144] ([65.55.169.144:2447] helo=na01-bl2-obe.outbound.protection.outlook.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id AE/14-28792-6F33CF65 for ; Wed, 30 Mar 2016 15:15:51 -0500 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=lbJojZTfU8NW1qqsmNyFYipStpjM4Zt3ihp30iXeQ4I=; b=O+aheTDEthC8HBgM6vxvp0q85ufENPL7RbjqCXBXiX6qcm9J8h0k6Kvv3seaNwAJ06BcpPrie+xP5XVNu5dxwPb1CixyQRRPotRPqF/ptOP5jdPQZvacueCwERW/nuEIgr37bOmyDQfcRjeOiJS9pVPJHl0Cs2cLnpknKTOIwtY= 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 SN1PR0201MB1791.namprd02.prod.outlook.com (10.162.228.21) with Microsoft SMTP Server (TLS) id 15.1.443.12; Wed, 30 Mar 2016 20:15:45 +0000 To: Nikita Popov References: CC: Alexander Lisachenko , Antony Dovgal , PHP internals Message-ID: <56FC33E4.8000007@zend.com> Date: Wed, 30 Mar 2016 23:15:32 +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: multipart/alternative; boundary="------------000800090702060702070601" X-Originating-IP: [92.62.57.172] X-ClientProxiedBy: DB5PR02CA0033.eurprd02.prod.outlook.com (25.161.237.43) To SN1PR0201MB1791.namprd02.prod.outlook.com (25.162.228.21) X-MS-Office365-Filtering-Correlation-Id: 002cd770-0ff0-418d-b341-08d358d8143e X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1791;2:+brw9GYxaeL6MTWit3qiJ0HlHXdjFrPC3ofMR+JRzjS6tzY3tvroWMeGIEHV/rIU+GY4W3jmXonRm35IEdlpuFMuAYU4aq5OoIDSLp3gFM7vovdblwGgOZ3KqJg2do44dpyLwOZ5H+IknHEKmL3mDRRZCH9J9XPY+VO8ZaAa3HomfUllKfjZU3uEl5K0XS53;3:tStJpO5Fzx4QkPa0t2ngtAyZtlYaDNK+IepyTA81/2+wdo+PeufU3yApv1c8SnDI2oSEj524pvmhQkyOGu0s9myzZ/8lpjmjYjmdoYS6wqlKk5hkaHfDsOGe2yJA/khn X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0201MB1791; X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1791;25:gHVzQytNOZSnGOThJRGDU1a/Cs63uitambWgcI37SgZFqoSUquDlC1gvgVwb3evNDcN0o+1Lth/gmrd5+Sm9jstpYp/Psq62gYMy19+l/gUQF/DbKbj4bUq/eacB08sDQEA2ZvGgLw2oFIL/eDdvv8X3pn4hrxSy5DSX3SGWxzcdWYVN9+jGUhUbtmpiAwBwD/DxNbXaQu7wm9jPB/U1XDK5IQGCmcsLkPknd6sD5ehsCUVxjj9dBRBqm8aAEfLmKKSEdCqogszQMGHBmjt2dPFgdaAlFVLTrqWaDQ7+UBkmu+a/jZxwZyK/6uQMltsS1kDXx/qD0PZuNo5JTd2VuYpFeIz8UPqvG/L0gB32bb84MtLK8zjFgQhCSnVRl/yNsi6vUJBXmF0AnvgLLuy6PsV3WA74s/g78eRU8zDT035+W7f3ESUOAHOemb+5WLx/OH3fsHmblNlNsNjd8BcMNS/ppu0PSiw5Iid2xjgoUrkZHF1OzVNdzarErUe6ehbJsznJm6VG0qfetRLnrh94uC1xTEGQ/CEemh80n896VVfN+7S+mztw0OlOsCGLYocEfZy4zYG0XXcBzeUq82xOLyIgjNDgd7EbMotX3prycSN/DS12SwS28qdqBHnvOg74HiiRastUTY5pFfm02izKqhON6kBCVNMkqBhgYb8jyVLIRQRfyUZlcTWmxwX0na0c0vT44Q3c8TlPaY6ujbpot668uT/n1KSvnif9aBrFLzw= X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1791;20:8HAOeFQfF2dAX3sb8UN1lKBk6bagSfFkZdBxIiGrAXw3aeTXfWAWewn9zrItR+uaSEWcebNSyBX6Vk8K/Ybfc0t4abG9irjhDa8qQnb4ZgwMkyrFj+efPtubFssxg5xeEdN4t3RKCJLdYYsrnPs7A7orcxkQxWKTpRthDDTRIvl5e42Vs9P9sGVG8jx7wQHeSxq+3WJxuxmWzlwVMYEfY4SeaWpFOn/mQk8Ws/m4N+8JOL7DMQMvhfcTGmq8vQoy+4fCq5VtVD4pXvaPN8v8lZZX4CHBFh6j2bSIdpk4yPCmdIZdlJA9NzcHJlTaz+Ka5O62b8nNEQwazyJU1zXjh7DWzIRPZ3sWFTKesJPAkFBc2Jgd0P++0E67ul0GPNhM9gZlnA9kbCeF4qh8aT2Dm2L0OJ5UnKYLk2zG0DxCMXvYo+TBmmAE8IYiaJWMhYkQ8MMR6kfbdPZrlUMp4PHecAFJSywImmHbJd7xhn89fRiU/HCPHEFfZobBreHrmkrl;4:D7PwvopL3TnHv5yljqyX+X/429sIaX6EJmehcHmG2vEEfX4Js7LgKDkqzwJTaOKVO0kE4IBd7eDYls6ShXsSQ3gdjnubLABPfSnt2cX4nUnDXHRNW52Fvz9bf99WxPrFXbRW/CZO+VBtnGgebKRW5ZGAqxNXApTw8iZ9bWzBh+YRgLGZf1Ig3vMs1iZWUvHi4Mmj/txNBt/HLXFTJMhPPcqB5tWSBLIzPWM626alMyfkSk4mrW//SVgrcpnMb7FR1DpPKfqxXVJvEF6qEumVvSiEuisvlCBkO2Y8/1s7t77zuXN8RqQDJKByCAGgS86+0yLhoYrG9kXMOAJEpfmwfTYWKUUi+nEr/6FueTAXkdVQoqlnYxE5dfSUd7ZOc9JBP1JnoNRIadwOl8Du8qmwqdeJR2zhg1oV6ig4QnHqPW4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(102415293)(102615271)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046);SRVR:SN1PR0201MB1791;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0201MB1791; X-Forefront-PRVS: 08978A8F5C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(377454003)(24454002)(52314003)(5008740100001)(1096002)(6116002)(189998001)(92566002)(81166005)(84326002)(19580405001)(3846002)(18206015028)(80316001)(19580395003)(4001350100001)(83506001)(110136002)(42186005)(86362001)(345774005)(586003)(50986999)(76176999)(5004730100002)(77096005)(33656002)(2950100001)(17760045003)(87266999)(16236675004)(65816999)(65956001)(512874002)(19627595001)(93886004)(4326007)(2906002)(66066001)(36756003)(270700001)(54356999);DIR:OUT;SFP:1102;SCL:1;SRVR:SN1PR0201MB1791;H:tpl2.home;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR0201MB1791;23:+yl7a3Xr9HeSUJwZBnHGVHNaUVUQwasNfkxifOK?= =?us-ascii?Q?szJIc2/92+WpT0RQJwezNNHWSLL6t/ztd6m71IGFVsGbbn28Nw66e1htVYgR?= =?us-ascii?Q?rcgATtZ0A19rPi7NkViTCS46OgMkqSN3nF1cYVsbTNUtCwxFx67X3SgDVxyK?= =?us-ascii?Q?fg3W6U7ptZCX0huz9FKKLPIXlTSWdgKw/eQwWVod2gtbXDyppusr17nkmYNO?= =?us-ascii?Q?N0jEegy3m81ioeB7vqMjTmfy8mNr7t7Le7G/+lep9dgzc+T0RsZ5eRjyog52?= =?us-ascii?Q?GX0gYlDYuhv3YpPSv66TAAjjJuyUz72AXRZVJY3kQTYGVY7cClD+g5mvCQXp?= =?us-ascii?Q?6jZ8du2jLNwXCEKU9zdEKLUVtdLIZvt6cLJmmUbjVurVQm62ZVW6B0oW+nt+?= =?us-ascii?Q?XUvJ+p1irzfnqzvDiS6PWIwfpveiAYKC7oKGl4STiVvlx3b+gmpb4CSmSWnC?= =?us-ascii?Q?UwbgwARmprPmIEgykDuyN4loGnYjZ8pA8jc+w5tCmmCsqc1iPjfY6TahCn1y?= =?us-ascii?Q?C6zrk4xKtf0M19EhRlwb9kvIsb2EuvcXfreP73i3gBAGLraGMsxs+0gDuRZy?= =?us-ascii?Q?iYC2zw9bZ3or4fXqvl9lGY6hKlkdhPtx3zIc4YRQcqWGzh1Agw63ijsbrNzW?= =?us-ascii?Q?fhwljdjbN/gRDpFw1mMOMbZAPUUV4nnGi7Mn79VbwueS1MhC40Vkja4erx8t?= =?us-ascii?Q?RcZzch4H1i+KqNBSXtVVSzvwvdeqyTGxhmL34OrKcsLi8THuR538AVrkHyhI?= =?us-ascii?Q?t1I5DBAjKAX75/xb5VNo2T9Ix0mJ323M2Rv444bLtdxUrr438ak2fQt5xwA4?= =?us-ascii?Q?UCEQIhlWeguXXakX2ocDp5bzcVyx9Nv/guVW1QuG9GA4NUuBsCFrwtJa/6lw?= =?us-ascii?Q?emYkKgCY42UR/7Aq0PpADX3vqZLY5fmAbc+Uf0mhAo4ofHf4Og0kyJcYRXGg?= =?us-ascii?Q?Nc+6sDbLPljhzGLBjjLd+gu9OPm4NDZdMZQY1JLBYOn0HMh8EZtLhkU16xhu?= =?us-ascii?Q?BJVJGx3GPZHIBKLsWSP6k0Op28VC1Wso8+La36SaWjsXzes9DDwAgqr3CJt0?= =?us-ascii?Q?6GIF61sHsSr5sraTFm1XAgsJoSXDP86qVbMYcv3IXlIp2Xy3VvzZygkJ6zHp?= =?us-ascii?Q?d7ky6EmvqouqzogH/VsF/xfbqR2Y/WF+/?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1791;5:jKRrA2XFTx2tGokiTyHsOzzMhrK4xzaBDdN2EAOKAVFY8ujz8k2XLWpGOYi3ErOby/9Ml0mYlFzvDVjZxo1VZ28s8v6RRwZFfS4KcgVV4CAr5LQUgA+V+dcbCRfRukIE31wa2+FLlN+b+18ZDpGelQ==;24:0iA3ciDoUqnk3pixQHUqs8nYb6TPMszV74LFMqmQL5DT5vHuS0rfyCz8leGyxnkhGMXu+oAnKfQasgKPUTYB6w4jaJFhrptOjLlYKZPt/pM= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: zend.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2016 20:15:45.3017 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR0201MB1791 Subject: Re: [PHP-DEV] Forbid binding methods to incompatible $this From: dmitry@zend.com (Dmitry Stogov) --------------000800090702060702070601 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit On 03/30/2016 10:46 PM, Nikita Popov wrote: > On Wed, Mar 30, 2016 at 6:18 PM, Dmitry Stogov > wrote: > > Great it's not used anymore 😊 > > I personally agree to remove this. > > > Nikita, can you also investigate the need for double pointer to > object in > > > typedef union _zend_function > *(*zend_object_get_method_t)(zend_object **object, zend_string > *method, const zval *key); > > > As I remember, it's necessary only for some SPL hack, and looks > like a terrible design decision. > > This is used for forwarding method calls to the the "inner" object in > SPL iterators. It's basically the internal equivalent of doing: > > function __call($method, $args) { > return $this->inner->$method(...$args); > } > > I don't think we can drop this feature at this point (deprecate?). We > can of course change the implementation to use a trampoline function > to avoid the zend_object** hack, but I'm not sure that would be > worthwhile. thank you for discovering this. Of course we can't drop or change SPL behavior. Trampoline looks like a possible but too complex solution. anyway, it would be great to remove this hack. Thanks. Dmitry. > > Nikita --------------000800090702060702070601 Content-Type: multipart/related; boundary="------------040803030202020502010202" --------------040803030202020502010202 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 8bit

On 03/30/2016 10:46 PM, Nikita Popov wrote:
On Wed, Mar 30, 2016 at 6:18 PM, Dmitry Stogov <dmitry@zend.com> wrote:

Great it's not used anymore &#X1f60a

I personally agree to remove this.


Nikita, can you also investigate the need for double pointer to object in


typedef union _zend_function *(*zend_object_get_method_t)(zend_object **object, zend_string *method, const zval *key);


As I remember, it's necessary only for some SPL hack, and looks like a terrible design decision.

This is used for forwarding method calls to the the "inner" object in SPL iterators. It's basically the internal equivalent of doing:

function __call($method, $args) {
    return $this->inner->$method(...$args);
}

I don't think we can drop this feature at this point (deprecate?). We can of course change the implementation to use a trampoline function to avoid the zend_object** hack, but I'm not sure that would be worthwhile.

thank you for discovering this.
Of course we can't drop or change SPL behavior.
Trampoline looks like a possible but too complex solution.
anyway, it would be great to remove this hack.

Thanks. Dmitry.



Nikita

--------------040803030202020502010202 Content-Type: image/png Content-Transfer-Encoding: base64 Content-ID: iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAGXRFWHRTb2Z0d2FyZQBBZG9i ZSBJbWFnZVJlYWR5ccllPAAAAYpJREFUeNpi/P//PwO1ACM2wf9njBWAVD4QBwCxApLUAyDe AMQTGU3OPkDRA3QUIxaD+oFUAREOaQQa2IDTMKBB84FUAgk+WwA0MBFmGBOaixJIDKYEoD64 65igBjkge+3CrW94TUCTr4eGMdxl8TCZxMYHDIZR1xk2HPiA1SCQOEgepA4J5CMbFgAPhM1v wfTFW9+xGgYTh6lD1s8IdKIAkH4PEz1w9jOYVpBiZ1CQZMMw7MHzXwwPnv0Esx2MeRESxmcY WYCUAbJiFAVYAMgCbJbAvPmAWjmACZqS4aHdOOs5wdgEBcWE5a8Y0HIGPAIOwETtjXkYJqIq xAAgeQM1ThTzkQ2biB5mC7a8xZ7kgeICvMzoYTsRJaMDY3U9chIBpaMHz34xxPsKgwMcFIsL gckB5KL+YllkgyYAg6oQJW9Ck8h+5NgFhd3GAx/humAGI2cGIHYEGvYBW0YHGTgf2YX4MjkQ F4IMwlkEIeXVfByGwsqzAwTLMywGg7wNcvED9AIR3TCAAAMAqh+p+YMVeBQAAAAASUVORK5C YII= --------------040803030202020502010202-- --------------000800090702060702070601--