Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:92630 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 65357 invoked from network); 22 Apr 2016 07:18:03 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 22 Apr 2016 07:18:03 -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.134 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 65.55.169.134 mail-bl2on0134.outbound.protection.outlook.com Received: from [65.55.169.134] ([65.55.169.134:27173] helo=na01-bl2-obe.outbound.protection.outlook.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 4B/0F-14036-920D9175 for ; Fri, 22 Apr 2016 03:18:02 -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=PTQB3IQH/NLokeeHt4luOuDUIW9V9+78i20+KXgVPgw=; b=ABsFEWeMCSoE7+Y7wK/pmABc0qUAvIxJ9IloARCxuSeiJO+AG+qT1ODHO+SDVeVsfEGmBDqSvayoCBehZScnkD1I03VMp0Pbb9wfziZN57sc9Sm4AnEMFynqLErpbt2reYfXFEtcL2Fb4tcDl4ygfgcpUPOisJPZLvPK/Ulr5YM= Authentication-Results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; 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.466.19; Fri, 22 Apr 2016 07:17:56 +0000 To: Sara Golemon References: CC: internals , Nikita Popov Message-ID: <5719D016.10401@zend.com> Date: Fri, 22 Apr 2016 10:17:42 +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: AM4PR01CA0039.eurprd01.prod.exchangelabs.com (10.164.74.177) To SN1PR0201MB1791.namprd02.prod.outlook.com (10.162.228.21) X-MS-Office365-Filtering-Correlation-Id: 76b2b185-ab4d-44cb-0228-08d36a7e3b0c X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1791;2:7YaRfscohnpbIE8w1PzKssZDF1HBCK0q/ObxS8j+BYrT+CPGHPsKD2SvdQhSbyDQWod380nlfVpcPmCKvbpyeLuOsdzdmMPvTQQs3OzD94iX2hiiNp/diQ5Y8jjhzVWTVVl+Y5qC3gJeLnEcduFKvWvQBJ1XrDOtwiOfBak3/f9djgYJSdA9mdkqe0cNxug/;3:F1jAGUvK9lZraXBHpdfuuNIHbUmTwF/znMNk1Xs4INuBjUXfH3oNpI+9J3nqzONizYKOavF/P81E4h08v1V/EYjZ5oJ1i3bcbEKxrq/533zyih6VnqlqBnWCFfTbyAhl;25:m8sX8cIqwzMuhPRCYhcmSR27wcTe7qmX/DVIdTUsNLqJnmWqTz6WgiNfekDI44bz57we11w13w9oJr7B+v7HiGINIDN+FZi9d8yys4puJECkazbT+WzbUEjCI14ytRuuRi6dai2uTbxYoJkRzxVdGJZJ0I+YryKgPlwITsKUObwJmhyUT1UFqczoD8tObUvQs5BIvwxsShIL2SQf1TvJctxPZ42IY90CiwGhhAJ8QuMJtV34rsa+c/Q8JLhQItsQchK7VY1sKZN5pr67gdZI4iS7xvQT4NpF+9kaF2Pckb9eOCzXy3W102Bvt8G6x4mwUTNhpNvH8UfOrxPAricHiQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0201MB1791; X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1791;20:oOmfYdL/0336yVTv68SLfUlVgUy0P/zDz8TzetfSG+a7Sok6/myvRDc5RSjseAvosSY0mbJ3tWOhe5uoeSDnT7e76JkkzJrMw+SA+KQ91uO1A1oluQ8o7nVad39Ztt8ZMzugx2Uo+T53QCrpKlR36ZklqXHQe3uVPmgELrYJItu7SsUer3tj6yV1Rpx/513+MtZRC4gZF4zGBoE9zCbM9/tV2kzmWJvcpWLLv5YGk4t1KvaxW+L0opm6/Gnysi4eVDFt2aKfZWm5lD8cILt11zJAQg28nrlbg051K9m8C69eFlZIIYmQeyW8RLSLCtbHaORbdC7D0WguzdaBnr6L2Lau2cOFATEpaldLO+XyRxUVbxGmY4J9oa0vBuUnSIlM3PO/Pi805mE29p5EXUOKo3QKeskiZgV8R4uu1Jv/sCTkSl4mX4yqg4siQ9AQ+pzbluuw7zvQ7H/LwcGrc1e/83qcJxxb6+xAxEsw3fSRph31CH/ysX5ZTZvboRJeAyLl;4:wTnMx4ggbERM8HEVjZn2gbSISKgwM8qNF4w+YGigSDpkrfmFajqijSRm1FrzzsnsfLw25oALBCFKi4CAYfMiokD7xILxiMO7x6jdLnXIEXAiYt8P/MH+/9GTcnHDwjACEr2uFODlgj4jdFcqaOaE/OOXJ504NCGMMLHc5nOCsBpSQ/7pNwuu3hAeH49Nt8Ir8lgrs3vY73t4tWqSVYeMBCyUlM+HAmYk5VWjjqqhFuOLxHMJf1jrnDNVp2CE459aKuLQeSfmkZ7cUSyoojAqR7GLrkCWqVykNr9BISUZLcNXLeF97Ecp/gVHzzqUwkNEhK32UV+0vfKKDNkeSyimh4qmVfuXVCuAnoEjG17sijdEe9VhjpRz4pF/Xu7KVHaw9TkkCzSMm91AFmdoZC+7lw== 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:SN1PR0201MB1791;BCL:0;PCL:0;RULEID:;SRVR:SN1PR0201MB1791; X-Forefront-PRVS: 0920602B08 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(24454002)(377454003)(1096002)(54356999)(5008740100001)(50466002)(83506001)(586003)(86362001)(3846002)(6116002)(77096005)(76176999)(50986999)(4001350100001)(65816999)(189998001)(19580395003)(19580405001)(66066001)(23676002)(230700001)(81166005)(65806001)(65956001)(2906002)(42186005)(92566002)(33656002)(561944003)(110136002)(2950100001)(47776003)(64126003)(36756003)(4326007)(5004730100002);DIR:OUT;SFP:1102;SCL:1;SRVR:SN1PR0201MB1791;H:tpl2.home;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjAyMDFNQjE3OTE7MjM6TWdIZ3Z5VUhvVXRXQVRDTmhZeXRWaFRG?= =?utf-8?B?N1haLzdHWm44bnFEcVZudnUwa095dGx2OE5vSVhyYlpudTMzaTZBSFFxYzBR?= =?utf-8?B?SDc3cEp0akY2SGhVd2lpYVV0U3JOZ3h4b0VwV0pmVmlPT2ZhRDRQZUxmdjZQ?= =?utf-8?B?NDRrVkFJNjdTeHRFT1pGbld2cHNqcnlKejZ6T1RhUi9GNUY3OWJxL3MrRnli?= =?utf-8?B?RjdLekdueGlPMDBCNUFLZk11UTJMRmFPalRCdE45dXZnR05ubGMzbklBcVFG?= =?utf-8?B?QkhJK05TbWlxNHBrRkk5WmZ2UHBBL0hmV043SmFQWDhPOTRGZVFhdU1jYWZR?= =?utf-8?B?a0ZhLzFqUTlzcGJCWnh0M014TEwreGVYbmxxMnVHWkRxdloxT1VpQkZVdWJ6?= =?utf-8?B?aFNrNWZBcnVLYnBOcFhSNXNXU2Q1ck85SWRJQTZ6N2RDTExQT2w0VnV5Vmdy?= =?utf-8?B?T3Q3RkU1bndpbjhMc2o5alpjcm5YR2Y3QTRkNytaUEdGb2RxL1hGUytuSzM5?= =?utf-8?B?YnRzVUZPNkxZNFBKSytuVUlDL1FjOXVhY0dKRWRkWTJQdVRiSEZmbmVkZjdK?= =?utf-8?B?RStIdHRxZU5BcldMWm9nUGxJWnNFTUl6Z0JaSzZaaG1UTllESDNEVlZYWnR2?= =?utf-8?B?OGFrT2I3WXNSYkl4dERmc3pGUEVlRmgwTTB6cnd0REV0cHdJTGRVay9rUTNt?= =?utf-8?B?d25waW9xNCtIZjBkWUJ1VHc0NUtUQUxCVmkrY01GcFRVdndLZDF1WThXWVRq?= =?utf-8?B?T1BJalRGQkpPWS9lU3VsMTQ5bWh4NGZQQTJpV1U2L0Z3ZlpQTC9JQ1duL0RP?= =?utf-8?B?QVF0OVI2NWE2Sm9GamtUeCtua1RzQkVOLzY1cmFtSjZJZnkxTnNkSFNFL1pP?= =?utf-8?B?ZElzVWJDV3RQOXNZNkJhUmNRWlhlaGpKNXFCVGNnM2hwUFJxNUZ1N3dhd1pv?= =?utf-8?B?VHE1Q3p0NmlsVnJKOWlSSjBTK0orcnJhUFUzd1piUmZ0cjROWnFPa0JackQ1?= =?utf-8?B?RWlQNysrM0x4R0ZNYlRZQW1IOS91ZWc2aDMyZGxCTVJ4MWFROThHdjNrSVdL?= =?utf-8?B?Umw4NHpHL3JJeHNBdC9wemltRTNDQklJQ1lMT3FOSm1Hc2JhWFYvaWxTblV0?= =?utf-8?B?RWZZQU1TNGFpZlovalFkaVBWSU9vN1BPZWhMT0N0YnZqOW16ZDkvLzFMT2xn?= =?utf-8?B?SDVDRkVoRjhOTnJtOEd5RDI0M255ekpQcHBub29nSkwyUno3Vjdpc2t3Y1hu?= =?utf-8?B?bktZaUlFUXJ0Y08xTmdXTHgySmpCUWJSaWlQNHdsUE1Id1RvbDNEdFJLSjZr?= =?utf-8?B?NktGUmVXVVp0VkdGdDh1YnFUYnVRcEVzQWNBN1dNUEw2ZE1kRDIrbm1KTVM4?= =?utf-8?B?ZjdmNzBkaUJGQ3dCZVpJUzhnbVo1ZWJ6RlQrenU4VUUyNUhUUUNyWm5JTTVw?= =?utf-8?Q?D9vNmNws=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR0201MB1791;5:MRWVKu/c7dMQYEOnpvE0PJ5wGdcKE2iveUYIHQ+X7DcP6nHtx442YmJIubxBe0wAx3alwf1MUpk4dBr09822hqJ6F8mEI9Y/TxwAaDTu1CCikrPbNyY9jThUC+NL4L6KtXcRSBL8vSiiAW4aXKjy/5BQPEINChDUwQHbTN1elK1Jrl8xtVi82tIKYfPBISlm;24:D72eCWzohkFRYakcy1JzuSdKbTXKWAyCn2zdfoKIt0283wEnds5xeYzJ+4BnhlnBmLJBeV8sDiVo8Y0PqWsN6MoIPFZ/fG9xSoHoJ9/YqjA=;7:gHk/+W7RsIitrLH3LtAgbMXCZNfN29WL/euXw1+INWXrQWgCVJjiTdlWW+UcSsb+VDxB7PtaA9XgrEsMDO0qStdllBQ0jtD4l5bBVFZmXBMwTSJ6Sw5D0L6NUMfspsE5ocwr/0gczNtGIz2vzKOBYMePH+aYERF31YwTtIr8Wl1BjppgCjL5YLueFz3cplaBpr9PEz73Lqsd2xxPy3dVC7n645+fScsmG+vuJ3H0hPE= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: zend.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Apr 2016 07:17:56.5000 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR0201MB1791 Subject: Re: [PHP-DEV] [RFC] PHP Attributes From: dmitry@zend.com (Dmitry Stogov) On 04/22/2016 05:15 AM, Sara Golemon wrote: > On Thu, Apr 21, 2016 at 2:13 PM, Dmitry Stogov wrote: >> I would like to present an RFC proposing support for native annotation. >> > I'm trying to imagine where the benefit of non-constant expressions comes in. > > <> > > Assuming we roll in php-ast at the same time (which is a big addition, > IMO, and deserves its own separate RFC), what are users meant to do > with this? Even if there's a use-case here, one could accomplish the > same thing with: > > <> > > And manually running that string into php-ast if that's what the caller wanted. Good point. It's really not a big deal to run ast\parse_code($r->getAttributes()["foo"]) This would simplify the implementation a bit. > > Also, maybe I missed it, but I didn't see an answer to the question of > ambiguity between parsing the above as a straight string, versus > parsing it as a ZEND_AST_ZVAL. I'm sure the answer is "If the AST > tree is just a ZVAL, then it's provided as the compile-time > expression, but what about something else like this: > > <> > > Logically, this is reducible to a single compile-time value, but it's > a complex expression, so would it be the value int(2)? Or > ZEND_AST_BINARY_OP(int(1), int(1))? Currently this going to be an AST - ZEND_AST_BINARY_OP(int(1), int(1)) > > I just think that over-engineers what should be a simple annotation feature. This makes sense. I think, I'll follow your suggestion. The only missing ability is syntax check for attribute values. > > All that said, I love the proposal overall, and I can't wait to > propose builtin annotations like <<__Memoize>>, <<__Mock>>, and > similar. I'm looking forward as well. :) Thanks. Dmitry. > > -Sara