Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:92461 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 65894 invoked from network); 19 Apr 2016 14:12:21 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 19 Apr 2016 14:12:21 -0000 Authentication-Results: pb1.pair.com smtp.mail=dmitry@zend.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=dmitry@zend.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain zend.com designates 157.56.111.140 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 157.56.111.140 mail-bn1bon0140.outbound.protection.outlook.com Received: from [157.56.111.140] ([157.56.111.140:37742] helo=na01-bn1-obe.outbound.protection.outlook.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 97/E3-43496-3CC36175 for ; Tue, 19 Apr 2016 10:12:20 -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=q1zX2C26czhDAIGF1fnpvDtQImgCNkQcvNiXS0Rs3FA=; b=mtB6MpXYCiSLVUXW20BABI1ZKm8JtkyVA8R8E7xx1siauUQV5pAFRGLZoCELxqSai6z2LnrWgS8b6J/96a5hQoEprzooN2R4sl2N37OPpmbvdw9LpoTlztMPdCuTIawotA5rZtLGdjrw8A7GGS7bUZmb++YWRkqdv0MaHd85a0c= 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 SN1PR0201MB1789.namprd02.prod.outlook.com (10.162.228.19) with Microsoft SMTP Server (TLS) id 15.1.466.19; Tue, 19 Apr 2016 14:12:13 +0000 To: Joe Watkins References: <5716310B.4060104@zend.com> CC: PHP internals Message-ID: <57163CB0.70608@zend.com> Date: Tue, 19 Apr 2016 17:12:00 +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="------------080904040301060507060100" X-Originating-IP: [92.62.57.172] X-ClientProxiedBy: VI1PR06CA0075.eurprd06.prod.outlook.com (10.163.160.43) To SN1PR0201MB1789.namprd02.prod.outlook.com (10.162.228.19) X-MS-Office365-Filtering-Correlation-Id: 65da4bda-0aec-432b-05d7-08d3685c9b82 X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1789;2:1KoGJlDRAatwtVTTloYgM0AsIJw8TDVgh/KfS6Itpo9kM7V8EhzBPeubeMW8uBqrjDyR4UzgGgSUThYg1bx+xiCXFik8zFF+t+qkBnnBxZxT7KUUYTJCrjCFPQyxFqqw6RzVhNkQ2x1kpqlmfp2+wfj+vJo1OxgXtraJAOtDyzJ6FacmznCB+p8tU3p2D8zn;3:t7MxLpReRDJZLHDbkGu98qdAMRhAdcsX7V0rEXFry2j0fkIW2/RYVzve08jTjTt5hGv1NW01dTFjDUvBIZy8uMiB+nP95clGXMFHYG+yV3ytENXanlyCsk2qAcV5APmM X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0201MB1789; X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1789;25:fwk+Q28bRwrrol/fKSsUE0nWj6tIaix/xIgYhPKukSO0yftDrEPkTk0kAOM4eHTsYWUq94npSrGAF5xqYk5FEd5EvaJLUB8VEEqi4PhR1cU5n2tEZ/oT+QVRXZnhQB4bfEnsLZXRln4IhqS3vsB7e+qbyUYwfSnKK7sdmdW4pp7syRHCMB8DKCFLLvRbWRzDIz/u1GVawfjnWS9AY+Z95w/m8pVAMFqI+ZSbPJpWAHGYv4cutG8v2+w7AdIVPrZ7TSj4BFsm/mwRcIoARjDzmvv5frtumwPkiCebIlkmQVr6M9rG7zdgQqE479+Ir5W3E4laIIQbgr5FIwcw8HQAvKDs23FNGa7bi6UGi5C8QXvCwO8LlyHdYnuoKEtD22cMMh1IIPCCTl5Q0rIAhDu3Qx56iMaN3Cm+xvwL8QP2rAeaYn0o/CtcHekq3RK2N+VYNpDn0ouB5Ruck0omoYZJb9rFN76RPHETvyhKa7YDBsQ0jXuBaKBjW1epEvbvryXzQ3e9w0T3HzHdUgBD+/3fh3HCHVp7qjL3u7o38mhohEI0EVwh8lVjGtWRWBL/S58xnBp/0Ylql7UTdf72xfvcZ/+kbPIAiM4rGvzbgkseCRd3GaqgFnFlbyK5SZaXsxJg0fsxvGdKzAYY63nrmXiEJqZIFjNjLvOSmo0iODwelZj7p6ud7Q0FB+VSLUIRlbomCaj9wy7ppa0nJQAGOf4JhGzHf3sxMz5HQUj+o4yodnUlEZpqwBQpfUZaxsB/qdAVlAETSWYlcy1NzvwSwarbPKfS7cRJ39Lftnw7eQOy3DSPupnKoBQPka93P72BgpKqK1wBAvpJLxzgMCDS2yKhWxwb7Ljl6KGP4AZzCW84AmUorGrMAERzewkzXxYUG4h8N7jEYB7bUPYmi5uB4pmpT7R6UQpYkbZ5ZMBMOLchlE+mfBgn3e/A6Pg1GSOtrjW9 X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1789;20:V6ra2FGCwIq+9VOXSioKlrma5R65S7Je4roX6Mvnp3hAgU016TGmRzRDEuzjSYpTLkrRfVI11LqloP1o+2wl4/Jdq/VuGiInSU2e/CsNSqw1GQT5MuDJV5P2jgq/71oScevPA4pp32ITvK6lS/H8gmlEoV/1s/KmD/2mMnZWxJObcpmsW/jdpiu3EWAmNs68If9T8fVWYqt2uHBwhhLS2nrtnQRjuPjizOTf52LEMpWrZPrSyNA6eyHQgXiLkCEAUBuGfawYih/foBKCaV7srdVSbiua6o/rSGE1CeydSMDvkUmp6pKEk938Qq2PPbkWvcnOoNVD5c4HOKUztYXdfefsnUwgYZcGR/a2/hWAXacrFFAWnnjgCG0Co8cSSt/vN5b6X8OJ+cyfPpUJijwISVq+9kQSRss6NQK/ii1/aRc8qNuL/8sETAiz3t5tvuOnk8nrpbVbooc2jGqqUXCk0pCe1oXznQpVhTlZ9k/as8UV0odlVbbSjQpJLX+lc88L;4:42XRNNAUHZXYDQxAlQmbqb0Y+gZSFX6k8zG87x+XbVwg1iUjrv07ZF2dgf792ykg02AEuVFuL56tVtqtH3Zzg4WiJFEwbrHgsy+LWoL0JgCuDGAwdQnwPiDb2N5uRKNXgOUzSogqQYueBJsGEACVGZ3ogLt+22ktI7Gox1L9dRbnA/0JTte7zFQb+dWctpprT6NckfrqJUhJAvy545XFwz/WDNRe+E3IU6iWmQ71BddzV83pwtrLqwK+9gHyY3Hpfdyf3kQ5B6lGKnNgHJBEzkGbS5++8/YHEzOZYp/paMkjKIJ/LD0vQFBWJzAL+JkStzj0slOkEkbaP3pGM/tvUe1QYaqz9k/KqO2WoSa01hnNQLtj1ZBUkALNQCyaQK2dTKrSx0qbaazaILeKcfdqJw== 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:SN1PR0201MB1789;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0201MB1789; X-Forefront-PRVS: 0917DFAC67 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(377454003)(24454002)(77096005)(92566002)(6116002)(86362001)(5008740100001)(3846002)(2950100001)(586003)(19617315012)(66066001)(189998001)(15975445007)(110136002)(512874002)(65956001)(42186005)(16236675004)(93886004)(36756003)(33656002)(561944003)(54356999)(65816999)(50986999)(76176999)(19580405001)(1096002)(64126003)(270700001)(4326007)(2906002)(81166005)(83506001)(84326002)(5004730100002)(19580395003);DIR:OUT;SFP:1102;SCL:1;SRVR:SN1PR0201MB1789;H:tpl2.home;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR0201MB1789;23:XxPx056eu18XoUeW3fd6a6oWr4jVyMNQmbOl8W5?= =?us-ascii?Q?9aw9irsNWuBMtBZ4+WQ8zwwVgA9qv/zgi4MvqG/8dJ4C2YX15H72eTKB7dfX?= =?us-ascii?Q?zv0QX5YX63eV3BidBWlvgWpq8oh3aaA5OqLGD16ALXexLrt4ztvPYod5W9u0?= =?us-ascii?Q?2IR+UEK2u1Yv3uetJ5qBLqYHjm/2wTt8GjOb5AO41fLsbYZP+jFM/GUPxxiH?= =?us-ascii?Q?1FXS4gb/7wr5iWUQkPlPNs5FMgYBZp8xnamOLgbEnGmjXYbYYh2pAuVQORo3?= =?us-ascii?Q?KcpNMQIdeayAK12E21wJdUxTRlIgu5RC6wz5bO7HB9x1jvUonBiHkZ8zA0pJ?= =?us-ascii?Q?6ilvA1g+jOd1Q69EOw3RcwM0rO8wRsgiqu9J+Rg8HY7/JUjrrxBzMY6dakMk?= =?us-ascii?Q?fbOnG+QWXot7a8kud+yAnrOad1k6UUMKdHGsezYv2uZJWKtukcgsdppV6Mco?= =?us-ascii?Q?6STUEIIZil/YHhiTMQZ3zwXb2icBN+frFoTwiAN6hXbZEssD1ysIJOfJyDpF?= =?us-ascii?Q?G+NZDJhe7vReqPlQNOsYiycqizl3SU7qPPV3HyZTJ3R7RJwF8Odl1MD1fQqg?= =?us-ascii?Q?QLG30uMyc7wK0usGVfpx80Df301bDoL/Ai5B5jN4TcNg/O35iPBirK0QO4s0?= =?us-ascii?Q?c0PKVtXlCxjdgNKgUX50N4E8fWpusTmqNyye2uXl97meZQPxIKWbdJc0S0kE?= =?us-ascii?Q?EXhk63dTIappHGdabUSU02M/Iu4z0NI+s1Z0USs7Qzs2XY6EN2Wo7cpC30cB?= =?us-ascii?Q?knjFkE36RQq+PLqRbHsl+RCX8bm+IyMRYdmt7Fg6VD4fljqfXUS4N/bz9F2v?= =?us-ascii?Q?DUKonVHIBRzwch83uphn6tQCG6xKfH5hcyJjYDypMbfWTucEjCxGz1qY8BP2?= =?us-ascii?Q?39TWBJ9Cp++siEhaSWX6IVJrg+dVy4oDaYfDXaZ3tzXNp1CH5/PVjMHEBPna?= =?us-ascii?Q?BgtPIihgDzfMbv1EkolQ+quJViFAQM5xBSdRdQTTOC+XNFi8B1aU9QBB8HyG?= =?us-ascii?Q?RL353/BR6BLWGVXZyyS+5Zx+Yug59XddrtPjD2dZLJVd0Jf63YP3t3bU0oqM?= =?us-ascii?Q?3J8e7gP4=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1789;5:Yd8dmGQNFPI7wk2wolYWvszDWAPU/3//7gCN/WUIlgnuyL6CcRM7pDch+HDNyLHX36m/7ckqtXhGcIEEg8twmPB8w9K2nmwFnHoi5XifJqg0yMchUwvn9eg8MRjR+y3jod3BkiiG42Vgb7aiEN/CEm+GljK+kRlxfcRsps0J+12HAvfZWhJJleMM1zSbtjv4;24:5vHeGnTIT47FvYkdk4GvNHYPh+k8OGtWYmLHW1q1P+/1G9mJx9r2RkXz9i+tPOq1Loc5G1RYNZ/1OKFPpcWsZaPzjDkdlPlWB81yTstGEOs=;7:qGpAm0zelE3p6Ahi/gyo+ySStl0hpz0eXkLgMv7kEfBOsZRDev3LeXfx05Gx+2neQOb9WDBxVt9ptEtbvxSar7nJD/C17NBtMWeqc4oYcIQeUTfSBHH8wjNFWkrv/U4Bdjb+4KigPgAUQEPsfmak4ttNtmz2CXDQSSpSMT5bouYtqpVWlTwf41NpMdsgKHE5JiX3GxaNysF+aeGEXAenz7WGb4ud1Y8ez6K6dOX6oMY= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: zend.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Apr 2016 14:12:13.4797 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR0201MB1789 Subject: Re: [PHP-DEV] RFC: Functional Interfaces From: dmitry@zend.com (Dmitry Stogov) --------------080904040301060507060100 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit For me, the proposal is too complex. I prefer intuitive concepts, that I may use without rereading manual again and again. For this one, I even can't imagine a natural (not over-designed) use case. But this is my personal opinion, and I may be wrong :) I'll review the code later. Thanks. Dmitry. On 04/19/2016 04:29 PM, Joe Watkins wrote: > > What value? > > Yes, shorter, more concise (from the programmers perspective) syntax. > > Right now, if you do a lot of work with Closures, you have to verify > their interface, the value in having the engine do it for you seems > really obvious. > > But also ... > > > I thought the same might be implemented through anonymous classes. > > An anonymous class cannot be rebound, they are obviously not the same > thing. > > > I didn't take a deep look into the code. > > I'll wait until you have, I think :) > > Cheers > Joe > > On Tue, Apr 19, 2016 at 2:22 PM, Dmitry Stogov > wrote: > > > > On 04/19/2016 03:52 PM, Joe Watkins wrote: >> Oh, it's confusing text in the RFC, using the word "Interface" >> ... that's meant as a placeholder for InterfaceName. >> >> Cheers >> Joe >> >> On Tue, Apr 19, 2016 at 1:50 PM, Joe Watkins >> > wrote: >> >> Morning Dmitry, >> >> In your example, they will do the same thing. >> >> Anon classes don't have lexical scope, I have a patch for >> that, and an RFC, I'm just tidying it. >> > > OK. so this is not just a syntax sugar, but if you implement > lexical scope for anonymous classes it's going to be sugar. Right? > May be it's better to start from classes first? > >> >> Even when anon classes do have lexical scope, there is >> value in being able to implement these kinds of interfaces >> using only a function. >> > > What value? just shorter syntax? or anything else? > >> >> The changes to the vm are restricted to a few lines, that's >> not seriously a problem, is it !? >> > > I hope no. I didn't understand all details of proposal and I > didn't take a deep look into the code. > >> >> I don't see where I extend closure with an interface ... >> > > I meant new field zend_execute_data *interface in zend_closure > structure. > I thought the same might be implemented through anonymous classes. > > Thanks. Dmitry. > > >> >> > zend_do_inheritance_ex(type, zend_ce_closure, 1); >> > zend_class_implements(type, 1, interface); >> >> Cheers >> Joe >> >> On Tue, Apr 19, 2016 at 1:01 PM, Dmitry Stogov >> > wrote: >> >> > interface IFoo { >> public function method() : int; >> } >> >> $cb1 = function () implements IFoo : int { >> return 42; >> }; >> >> $cb2 = new class implements IFoo { >> function method() : int { >> return 42; >> } >> }; >> ?> >> >> Are $cb1 and $cb2 going to be the same (do the same)? >> Is this just a new syntax sugar, or a really new feature? >> >> According to implementation, I think, you shouldn't >> extend "zend_closure" with "interface". >> If this is a sugar, lets implement it as a sugar (without >> VM changes). >> >> But may be I didn't understand the idea at all :) >> >> Thanks. Dmitry. >> >> >> ________________________________________ >> From: Joe Watkins > > >> Sent: Monday, April 18, 2016 13:22 >> To: PHP internals >> Subject: [PHP-DEV] RFC: Functional Interfaces >> >> Morning Internals, >> >> Please review the following RFC: >> >> https://wiki.php.net/rfc/functional-interfaces >> >> An implementation is provided, and is testable on 3v4l. >> >> Review of the implementation from those of you that >> do that would be >> good :) >> >> Cheers >> Joe >> >> >> > > --------------080904040301060507060100--