Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:92716 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 6736 invoked from network); 25 Apr 2016 08:46:23 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 25 Apr 2016 08:46:23 -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 207.46.100.108 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 207.46.100.108 mail-by2on0108.outbound.protection.outlook.com Received: from [207.46.100.108] ([207.46.100.108:10334] helo=na01-by2-obe.outbound.protection.outlook.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 30/61-00233-E59DD175 for ; Mon, 25 Apr 2016 04:46:22 -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=xBYjls0EXNqNAOt/ZIqZuM0eCDnNrzKOpvL8XfyZrew=; b=hkyJJvnH2Ra0GKee38jcaFkmbLsV41b4brCL+plPZqW/kgKkxMEMCDx3YyATvF3eCGquYyJqtxFKp/KUHbOIzCOv3WPEbQntqPEFK/w6Q3chq+CioUR3kSqzHq2J0Yla8qfimHZpe+50uv4b2IPE3e1TKfVes8VFSpsiCn8FTSA= 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 BLUPR0201MB1778.namprd02.prod.outlook.com (10.162.239.12) with Microsoft SMTP Server (TLS) id 15.1.477.8; Mon, 25 Apr 2016 08:46:17 +0000 To: Levi Morrison , Dan Ackroyd References: CC: internals Message-ID: <571DD94B.3060604@zend.com> Date: Mon, 25 Apr 2016 11:46:03 +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: VI1PR07CA0058.eurprd07.prod.outlook.com (10.164.94.154) To BLUPR0201MB1778.namprd02.prod.outlook.com (10.162.239.12) X-MS-Office365-Filtering-Correlation-Id: e4688445-5fe1-47c4-4a19-08d36ce61180 X-Microsoft-Exchange-Diagnostics: 1;BLUPR0201MB1778;2:tr1BUBGs4z/fBd0yTKHODLlsVgzosd0vRod8lVprfoX2VXD/+A3olw3mFMorpDp5D39hNxE9VSMsml+uCWSAv1VzmIu8YbLn+c+VLDplb7OF1coGyTDQ7BCEXE6PPiNzQcLk8pMek0KBb49bxyTByw8RFwW8LLiEXIM9hP8nlhbIkpIvOtnp3Mv0gw8uQbgK;3:0sUm/MgTe283odQ8RqHXce8HY9D23N3xzhQjI4bTmbl87m2SXqfPyLtxc1neKXRW39B2HRbVbz4aRkWgB0QllWEwrZFZjq708C/lNDqyjRF/rjUnEkZ67JBn3KCgneCd X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR0201MB1778; X-Microsoft-Exchange-Diagnostics: 1;BLUPR0201MB1778;25:i7vAKc61nP17pv+5jhb0aKFfILOFyyb5L8r+tUzyy/5HHSBNEEUVN9rivULtUs0tAQY7k1sbFtpYie8xtBsD863FsLOsaamDP9GH284CMRUilRaQT6CX2Y/vTIhVLlnpI7wVrYfo5uYL2QDOjB6SceqaaaK5XYbAZD2GinKeQxjcm7Lk2+e9AyAvq+nMW2h75T+hvLIu+di5G2z0ScI3we22UdKCvGo670WvaQ2pjOFSyVj+6gM9HhoNwcAR5wxZ4AD+ftPCoac3Dh+hSl5vBe18IxjmKXV2pnOcnty9IZxwS1aoSD4z9psbhRaFaqXmXINABZW1WmK8z2eFdcA6X/ZZgJJW4NCKgqJOfC9zzm4ZtZ6REF6krpYZmgmM13WBB7HfaUXbspXKeFKo/+JqBfe2JCPXoGFhjFJLYP4+qlg2NgPYXsRQ82myBJ5X74AA6irZh8EkoFuz/BFQynXuHK6Mo41UieL52gkmbWWVhrAJInmPj0b5L0GVuY99SPmJ0q6zNs9TtmPYUgJuv6wV4sAA9iFdkU+QPQH84A3Mun6KFQSh8Sj4u3dlyZbHZ6T5JtUqdr1/foQtqzS3fDKKOzQLk6OBiVDTH31bGCmzP2tfnCTRsg0HdhVA6zR+Sr0Ogv/ZUrblnvvv4hKyUcF2yg== X-Microsoft-Exchange-Diagnostics: 1;BLUPR0201MB1778;20:T4HKBiW9N3T9R00kpRiDcPGIH4mib5zdRswoXaZamdnM2xJ56UaWyLd0ql3b9NLu96mz9N8/J1+qrKd9WjGP0KLohsl0iEF4GySckroL8AMAIvJp9jAcLQTgiKTmHEUoShY/iYYqiWcvqGL4AY2jfft78sCCd4imh8MVE0EQrp5GKuJ3zpjp8F7kJqocAI54nm8NM1NbMpldjU7W6UJ+/MvgUM9IH1mlBpPuUDXENQ+rY1tbSNEH/pj7hpLCaEGpTyHH2chfMOFRFL8xxcCRC1UxfjjMAHahFbgksTF8kHeDFTPdwQqy5rWCLHw19ESLSl3l4nAs9TfjHtWURHXDZ0vNvOUmSnfTg/HVBQt3MSriInd/9tVmQ+kd4PQaxS9RxBFOKetCGItQO15JyR71jQJVALaxNouzMMoPw+LNQeWnbO/6gnbGHneBtTAyADuLWgtWcL1DY3z/Zg39ypel3UWY585pxgPK/Z8RIViP7cSlJ7ACSeNoT9dsu4ueQz42;4:BgQ3kIgPtokvzewcQ1Cj12GyOzIVZmB1nkIt9uoIMjTqdTI4/HB9ec5vND1FR9wRYek3Izk6Bi/pygUvekvMKCaAa8BBfQp48IpvYcthdWjNW1pVFpkNVuWoXExIWJ6+3BOWBJj4XacwEua1JbrvWywMx8I5m8l09ZfX6Eo20tf6hjzXTjSI45mzj31PO/9oKHA6DXjA5oRbLEdjpIaaaN6eGgW5TLCdZKQOwGoTNTjTP+RZX157/RwLLjbHy0+uGDE2e+8d4vBL0hQY0Vx3ss2W5PZcg7uNU5PKNFXzC9vrFkw+nd0xrwZl0vO8TnF5N0O6IkpIft0Adh2A0sz7kGxyrX7bF69hWR0HKcz8pgYFJ71okRZxBcv2Nf4/wY7gBDrUeyHk22XDSuny0G3moA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(9101521026)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001);SRVR:BLUPR0201MB1778;BCL:0;PCL:0;RULEID:;SRVR:BLUPR0201MB1778; X-Forefront-PRVS: 0923977CCA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(377454003)(24454002)(2906002)(87266999)(54356999)(65816999)(1096002)(81166005)(4326007)(50986999)(76176999)(2950100001)(77096005)(59896002)(23676002)(33656002)(5004730100002)(64126003)(5008740100001)(230700001)(19580405001)(36756003)(42186005)(83506001)(19580395003)(65806001)(66066001)(47776003)(65956001)(86362001)(189998001)(50466002)(92566002)(6116002)(3846002)(586003)(4001350100001)(5001770100001);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR0201MB1778;H:tpl2.home;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTFVQUjAyMDFNQjE3Nzg7MjM6WkpPaHYxdUNiNE1XTVNhVCtDME41bmVw?= =?utf-8?B?YUpXVU9rUkRzc0xYVlBiT0xzbjFnZlFnbDFWZ3B6TXB3WW8xUlY2M3hYekVs?= =?utf-8?B?Z0wvTUgrYzFOSDZiSTRNRU54bkxJcTFNZlpqeklqanpmZHMyTnovWGdEMTRV?= =?utf-8?B?akdaSmJya1VHTkM3VnhSMFJLV05qWGlTbU9ydGZwWVlQeFRtZ1hQNTU2am5U?= =?utf-8?B?cFAxaG1EVU9CTWp3Q2IySFIrUVp1ZmFnYnJOL1VUbHFiWDA5RnRjeXZHYkh2?= =?utf-8?B?ekNZRUdVUUd1Q0ZrenRhUkQ2Q3dXMEFWazZkelVVNlYvdHZoSlg2T0RVQkFm?= =?utf-8?B?TU1WcjJPS0NKd2RrbkNCNW92dUNkeTM4aWhnWnI0MVhuWVVCME1nTS9KS0JS?= =?utf-8?B?S21FMmNxRzJ0VkFGV1hjK0FMSHNsMEdONmNnWmN1UjQvd29WZkNNbGFYWlcy?= =?utf-8?B?blA4Kys0Z1J0Y3hoV3l6M2JEMmpQYTRhVVdPSVVLM3dWZWh3SmRuTThYa3p5?= =?utf-8?B?aU5DcFV4c3YzR2Y5UlJvUFB2WUtGRlY2cFM4TG16bGhyc3Voc2E1elh2dTNh?= =?utf-8?B?bHpieHNaQVIyKzJPQ0hLcytQczNsQlllRzJwVU5lS1RYM0xOUFpyZnJDdmM1?= =?utf-8?B?QXA5K0Jrc050YUUrTExpS0g2OUhLckdoOGVhZmZUY2I5YnJDZkFtV3MrbC9T?= =?utf-8?B?RCtmamNKa05HdmFXWGluUGRnU1ptVlRLRFhDSWdxRGlXZisyMXhyZnpBTkRo?= =?utf-8?B?L1lKTTZ3ekNmME94MkZ5OUZhVzIxNzVRWDk1RlA0cnZwQWxwZXBLS0N6S0JM?= =?utf-8?B?NzVRT0szL2lJZW05RTdXaG14TTJTcDFqSjMwUWZ4K2tjVWFkbm5WaVFVZ0ND?= =?utf-8?B?djBXQzk5T1BaMUQvQVlJZkJFNG1XZGlkSWpzT05ieXFwdVZjTUhUQWRqTnFp?= =?utf-8?B?RkRORTdXaURaNVdpYWVLSXJ0Z1U2eUNIdUdMWUE1WkVBeTBpYllBNVpGeXQ3?= =?utf-8?B?ejR3TDlXazF2T0JLSWUwMHd6MDZOOW5HcVFZT3pHc3lsZVpYTzZwTGd6OGtF?= =?utf-8?B?SGRGaWVUSnEweTJGUFFiK20xb1F4cTJETFpaS0xEWVRvdWNDZ1JRVEpjbVVx?= =?utf-8?B?R1ZsTDIwbEt6aStZKzhPUXM0aDZ4bGlVM3hXa1BUZUdRK1BCdHlhWDdTRERB?= =?utf-8?B?eXBUNmtoUWxzdnhRTkN0UkxPOVc2bTdJekxFQU01UWd3eDIyMGNmbXRKbHJV?= =?utf-8?B?MG0zTVpoNkRRd3R0NlZna0NJQjR5dW1JWnliWlIvKzVwUVZ2RU8wNG0ySFBq?= =?utf-8?B?dTR3emlkWUlUc0puYlBZVTVGWU94c0hod3hxeVUvZGNYVEdHSXdRMTUvd2RP?= =?utf-8?B?dGJZRlpPM3FnclY1NHVmYUplTVB5ZmtVWlZIaXpGcHFSdi9BK2p6VjlCL2hM?= =?utf-8?Q?1WE1F5Jmy2r/sL7Iow20sdzt/ZTA6?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR0201MB1778;5:H+B2Yz1qHIQK3vWCneRefVOS5MI/uHZenw/HrBOxkhylt7bB6YxQdKCSauiIJNe69oWw2ZzLYTzENXImEn6KY/CNXR9gn7ORp8yfpbVTMZweAGBQOyEoHYKaMzzPnPX6kO/LCWwX3Jdk1E+1UHR/4g==;24:IY1QnHwsf/Gkx/PyVsH5oj9oxJhfcYfEfW0z9eykQDU2+EMoulpMzdYueeR18XKtF4wn/FlN9V+ekq2F/4wcRoOJPCigYSc4OXO94gW3rhw=;7:ZbtIIWN8Jdcngn3YRxsORBIjDWF93baIlaZIfe7d555r5SQE4TuUM7WdH2h+7S28WOhpjkzvAznXgBVB8HlSjqRVzFOElG4Pe3xXalQx9XF+gbXmQHNsSEv+SyI8yXC3kLE7qOQEMmQLGMlQsZ4yavpugr8rscwLrGeBxat2DwT8dvLcb8ZunzA3+FU/0hjZ SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: zend.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Apr 2016 08:46:17.1269 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0201MB1778 Subject: Re: [PHP-DEV] [RFC] PHP Attributes From: dmitry@zend.com (Dmitry Stogov) On 04/24/2016 07:57 PM, Levi Morrison wrote: > On Sun, Apr 24, 2016 at 10:03 AM, Dan Ackroyd wrote: >> On 21 April 2016 at 22:13, Dmitry Stogov wrote: >>> Hi, >>> >>> >>> I would like to present an RFC proposing support for native annotation. >>> >> Hi Dmitry, >> >> Although everyone will have an opinion about the syntax, I think there >> is one criticism that should be thought about; the chosen syntax isn't >> future expandable to other concerns. >> >> People have talked about "design by contract" RFCs where annotation >> like data is readable by the engine. The current proposed syntax >> _could_ be used to store DBC data, but it would not be clear what >> would be annotation data to read by the application, and what was DBC >> data to be read by the engine. >> >> Changing the proposed syntax to be something like @attr(...) would >> allow it to be expanded in the future by adding a @contract(...) >> construct: >> >> @attr(test($a + $b > 0)) // This is attribute data read by userland code >> @contract(require($a + $b > 0, 'InvalidFooArgsException')) // This is >> DBC data read by the engine. >> function foo($a, $b) { >> ... >> } >> >> Making features be compatible with future features would avoid a lot >> of potential pain down the road. > Genuine question[1]: how is @attr() different than `<>`? Also, > isn't `@attr()` 100% valid user-land code today that can precede > function or constant declarations? @attr() - is a valid "silenced" call to function named "attr". This syntax can't be reused. Thanks. Dmitry. > > [1] I don't like that I have to make that explicit but it is what it is.