Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:92653 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 97176 invoked from network); 23 Apr 2016 10:43:48 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 23 Apr 2016 10:43:48 -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.111 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 65.55.169.111 mail-bl2on0111.outbound.protection.outlook.com Received: from [65.55.169.111] ([65.55.169.111:56081] helo=na01-bl2-obe.outbound.protection.outlook.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 28/B2-01429-1E15B175 for ; Sat, 23 Apr 2016 06:43:47 -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=qgLj5J5Vpm1/DTsk93uo49dGvbDuzIn1xbs489P6eys=; b=Ss4G4GLoC2GSds1T49HTWsmK8cZIAkDfs9FZ2ldl/6RLoEihLLrRS9+/VwCJjAIgnGIBofZkYHxoHxGpnYNkfedu78sbG/kMEVkCHZynX40ym4V2UXswSRgqIKF1n8tk/y4B1MmXJBxFxl2Myrmk0PWN/eFJe0tRR8u+n2/9EpE= 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 BY2PR0201MB1781.namprd02.prod.outlook.com (10.163.72.23) with Microsoft SMTP Server (TLS) id 15.1.466.19; Sat, 23 Apr 2016 10:43:41 +0000 To: Thomas Punt , internals References: Message-ID: <571B51CF.9040901@zend.com> Date: Sat, 23 Apr 2016 13:43: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="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [92.62.57.172] X-ClientProxiedBy: AM3PR06CA027.eurprd06.prod.outlook.com (10.141.192.145) To BY2PR0201MB1781.namprd02.prod.outlook.com (10.163.72.23) X-MS-Office365-Filtering-Correlation-Id: 48389363-4cc3-4067-8607-08d36b642361 X-Microsoft-Exchange-Diagnostics: 1;BY2PR0201MB1781;2:+cCTJCvufQrlCFC/4iHJM++q4SzqWyyS0sjBnLhH8o5NHiYyVz4C5wGW9AzNw5b9Kthdcb1suMyNs33XrX2HaLuE4hJeo32W4KxisTFaxMos4DX0peOIOxff/FdnCz9Q2TnxM5u7b7gPQMS77cmjCpYNQv5LlBoYP3XQ6xqusf+W55tB9zfhONeCVtzh9RAx;3:pHvMFDHaFijq+aZjL4cBjg72/AJk4YhHYuFDdNVxdRBYIe0bPhXvQuIl5bhFLGEGzttOSJ3PQU1lvkxknJWTKt9+1B1pcTtn4m/rrhcQSnf5hTtAcwNJ6CkhIV3HyfRL X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0201MB1781; X-Microsoft-Exchange-Diagnostics: 1;BY2PR0201MB1781;25:0jEr4NtpIcC8oQlkkkzZCJxpBkNG/aZS/tF0DGqg6BxhGj1CZVzYX0pa9djtwPuabEg5FzeIfHsso5ZWhLP6qxY5JpfE+uFqkdohHAWtq+Za5XGrQ37CfW+LDV0ZfTYu6bLMSo7G3MPUj+ls8qcdcyNlLN/Aj9Ycadg353nFrlm3CAZmivZUhfunRwIUCDCzSDGtx4UdvkO5YnO//fwFNTuOnpfdzkeWV4Fm06nOqlLqzgdNNVidGCyUzi9geywFYNRt76T5cvkgM0l9WyCDFDgbZaDmQ9C+7rrUh6ouKuyup6WvctXuxoWjmdtYBTtSUwXbrbDiRidHWYZenL0DNUuiT215eDML8P+j5zO5UN39hh+I4+CxyIHvpn9Oyf2BHC2WWzjbCv5AznnO8dCOLKUV+/8InanDHQeBTd40GYWVmA2WDw0bzH/4p2+AEtTBZWBAGD6g823O4yPkKygVvPP3vz59t8m/SLjvR4/slMEc3W1f6D8ipcI3FXmPt06Ud+yN6VI5tEjNx27SQjG+zF9G+ISlrh+dkNnnqX8AIVCgCnrer8AAs/o2mE3hTMgwzPvx+/5p8IYyLaC6Y84wNCWL51Z/x3SVowMAh1JdwCiP/C4MwFKFm3X4RFhjPLjYi105pQilmMX/7CJTARacN5gBiQpOyQ5dp2kvXp3GNOhe992LgFuQJLywEhXQ9PvFV0SGi2W7zRxuKyFAmFQQvo/Puv+yRrnRAtWXHz2DKgvuPsCJW7oRbFClCQQqE/3HCSGKh45x2z18E/wpxZzCBQ== X-Microsoft-Exchange-Diagnostics: 1;BY2PR0201MB1781;20:igYcn6Eml7ulBIurDK74/J0ujhab1fDh9ZRxUj4iCHmK2TVqSbNXMQvj2bkti9N4gax/drPaijlt4fqt9E2qehGLMkiSAhkRgb3WChC9UNs292x7255iJG3xTp3Z7+oSeLXT7v5lkdp3grRHbE9kz5QaeuJIQMbqIV5uo7mPnSXKJgH3WmV+eKIUn9Tlw1Pa4ABFkMOgbbKuqqHtbb5anQa8AXI5AGEYKZe7ewWsTSPQLrH+sNMqY79BrMJor9yE68SNvR4l4OrSiVFhEVqxlpqwL/A9w4oF5MLsOH9a/c5w+luB7sKFLIQIsrEIPR7HYsiEhETEbEDQmdvJTWAl4JGLjQLcJywPo0YpvNaPf3vyT3noTY4PrnVtZhFkw2OFeX7L+0chXwKtx1feLOV7bNHQ7KACxZLWtS8fOiFJwnccm2wFvgcy1iHfJBDLKhorK9jQSLBEWcVxikXiqyUHtO5nu618No54ebVrBAPOCNgTDb90Tzz6wNOjBTOoKn39;4:mT8TPxDFdeE4l9LMVv37Pdb8bj61cb1FowHi0l0daXaiaM6cisIX/w+/bZ5Z47YWIds0KSv6vDQAQ2i4E0ftJX8DG8wm4LAHwrLbpbx8sDZfPNXz6NAYTEQVB8azwJd+UyjMke5DoZ8pojEN67t3HBb9CdYDA0Nv6/Uqm9rD1j9quGHPf35ChaPvFJ4mjaGp4oopQb1nGnRPJ3Go63lgKW1DsYZpR09cfaGJsCg7aFOiuztuGmsYpf2vCJUFTbdrPn8VT/74OtMzwMNUFpvAjgnpyM2BXBD/zz6y2Vn5PmRCoFyLgstA2Aq4CXdCiwtcGfdCM//OiS+BHdh7E0t6KabZeXkMuA+nkRvm4UOU4Kjlvse81mFHrurylLdGw1KlYaIqLTtPWiaLqKALjxn0Dw== 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)(3002001)(10201501046);SRVR:BY2PR0201MB1781;BCL:0;PCL:0;RULEID:;SRVR:BY2PR0201MB1781; X-Forefront-PRVS: 0921D55E4F X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(54094003)(24454002)(377454003)(33656002)(59896002)(42186005)(107886002)(189998001)(77096005)(15975445007)(64126003)(2950100001)(4001350100001)(5001770100001)(92566002)(50986999)(76176999)(2906002)(54356999)(86362001)(65816999)(87266999)(6116002)(50466002)(5008740100001)(65806001)(66066001)(47776003)(36756003)(23746002)(65956001)(5004730100002)(230700001)(1096002)(19580395003)(81166005)(586003)(3846002);DIR:OUT;SFP:1102;SCL:1;SRVR:BY2PR0201MB1781;H:tpl2.home;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;BY2PR0201MB1781;23:52AFM4t96SgzIrtaH+4oMKaImHFv1ox1Avz?= =?Windows-1252?Q?N0uyvJ/4mIulYldeeotemhLgNKSq0rp2vLs7WZ4XRdUWOu5oF/JwRVS3?= =?Windows-1252?Q?PrOLuL5bAMIff/DVq8Ii/yc/+bu0lXgbqfL4tvZvofD4V/4Y+h5f2IdH?= =?Windows-1252?Q?AnhoBDDzsUG25YVy9StAOHFauMhB7BRi0jhl1c47crQX+0ZmEIj8ak7V?= =?Windows-1252?Q?p5NuEoagUU+r3PSUZYqMRw2lEN9vakxO1r8dTMmLzY3ddCic2nGKnc6l?= =?Windows-1252?Q?nBSQMvghdpHOOrSncGJiVFmB+0NoLrt5t7V9A2myKtppZvjH6blhBRe7?= =?Windows-1252?Q?M83+OX3vH84g/Rauv2JHWeEUdygPV9TBWHxIx5+FvgVyepq3zBR+prZW?= =?Windows-1252?Q?W4T8H1VJRg1oXRChN47WObSVM7SALcHgLRhFz/CAayy+wpjHqbv0ZVkH?= =?Windows-1252?Q?eHGKOv5TrZzA5geoNtoi/BzY9lVz3H50P9OLhOzVaeTE3KEWBbF7aZ0g?= =?Windows-1252?Q?S/qJahusKZhJbi1Gq9BOewWIGcHpGKKU4VazIh3lQMLcXbw8mE24pbho?= =?Windows-1252?Q?SeYKUm5TLicxWLJQwbA7oYZQlUGjyW52Ojbk5/zip6pURvKznmMJ7rUu?= =?Windows-1252?Q?7aKfw0JxUMK2O4UYZWJxr7DsYuFqAUWzcP5+uZdDOua3OyLxtifTEIOG?= =?Windows-1252?Q?yrc7bGrXQBX0Y0xuPwG4JGCrG2wc1EdLWMdR+WiPOJD8Iz/6vcjHT4xe?= =?Windows-1252?Q?Yi3H030eEHqDAaA2gl7zuB1a1M+Yv4lzj/tjoHgYDUV5SzHCAqthspJq?= =?Windows-1252?Q?wRUPZk7eQHKW95hmFBLPKMy4j/6JBTgTg5+0JYuB8Tj7UTGGQFqRrWAb?= =?Windows-1252?Q?unCGT0Zv8AQVlgsdC3AIvYjhnj2QWF9CtyYNS0RD7xvJFhD8T4mFGNKv?= =?Windows-1252?Q?EaQLNn4ms6BoHFPDDWYBaVltGyLmzPrG62LPGsyV72oFn9z1xjnTdyGC?= =?Windows-1252?Q?g/FyPNGVr6X6y1q7fgbYyqj7pAge3xes2nFsckywVdtObWswBjZ5bbUF?= =?Windows-1252?Q?AUMcxr11T10z3AgoPGLLxuZZPz7AgD6V2gUIi7FkueOB8SQ75Aj9VVoZ?= =?Windows-1252?Q?TBsZrHqGc02Qo3RHrV6ZcobSnpNH2PfZPGoQpI1x45zR+?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR0201MB1781;5:sVKdh27PDKevuMwXHWEAQN5wM3j9HWzfbz5VzAkmsLP4FKoGlYXXLHnrqtrEJOavDv+DOoltXU/i5l7ChDrWFYARIaqkNxtjhFKV7qRccKpdv+7TBS5yb6+eGvFZVQb7+fsTaga5kSN5W2ipx7GLG+uo6//N0tWYbnmthlhGSizJgIbbGiZqfbjTXYlGxBki;24:MozsqzV8yX573vKnNUJKSJ1/13UGd4rldDAfOxfxHoRHuiyqPTKuF7utKrVZfpdEXVIVZZxYolLqI/LA2V0h+7VqQ6R/IKDUssZQOfbiIF0=;7:J3DwbksD9gBtUUHZnkQVsT94HAzHEEHDHVklmbP2KF8kocFYeqcbLVLhNI8FUs6zPGVBWV9q2A8iWflxoqho2V3ZOtMq9f0xa5HtLJeoOtg+C3cbMsAtU++idIVGUsICkpY90M5lRt8zFdAN28iQpTzw0OFin/y45/PY2PclrFOJs+OOA/jMFodHAjcAyTX1yqMHEO4D5AoNLqqkhKNw4rPZFVOhPQvPg84q5zQf+z0= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: zend.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Apr 2016 10:43:41.5898 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0201MB1781 Subject: Re: [PHP-DEV] [RFC] PHP Attributes From: dmitry@zend.com (Dmitry Stogov) On 04/22/2016 02:46 PM, Thomas Punt wrote: > Hi Dmitry! > >> Hi, >> >> >> I would like to present an RFC proposing support for native annotation. >> >> The naming, syntax and behavior are mostly influenced by HHVM Hack, but not exactly the same. >> >> The most interesting difference is an ability to use arbitrary PHP expressions as attribute values. >> >> These expressions are not evaluated, but stored as Abstract Syntax Trees, and later may be accessed (node by node) in PHP extensions, preprocessors and PHP scripts their selves. I think this ability may be useful for "Design By Contract", other formal verification systems, Aspect Oriented Programming, etc >> >> >> https://wiki.php.net/rfc/attributes >> >> >> Note that this approach is going to be native, in contrast to doc-comment approach that uses not well defined syntax, and even not parsed by PHP itself. >> >> >> Additional ideas, endorsement and criticism are welcome. > Just a couple of comments on this: > > 1. I'd definitely reuse the php-ast extension for parsing the code into an > AST. It performs a number of transformations on PHP's underlying AST > that make it much nicer to use (namely better consistency). It is also > less fragile by having the abstraction between PHP's internal AST and > the AST that is exposed to userland (enabling for internal AST changes > without impacting the AST exposed to userland). I'm not sure. Both approaches make sense. > > 2. You mentioned about moving some of the php-ast extension into core. > I wonder if it would be better to just move the whole extension into the > core first, and then enable this functionality if the php-ast extension is > enabled. Even if we move php-ast into core (I think we will do it), it's going to be optional. However attributes should always work. > > Also, slightly tangential, but the RFC says attributes are supported on > class constants, yet doc comments (IIRC) are not. I wonder if support > for doc comments should be added for class constants? it is already implemented. Thanks. Dmitry. > > Thanks, > Tom