Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:93935 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 5939 invoked from network); 13 Jun 2016 12:36:40 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 13 Jun 2016 12:36:40 -0000 Authentication-Results: pb1.pair.com smtp.mail=cmbecker69@gmx.de; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=cmbecker69@gmx.de; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmx.de designates 212.227.17.22 as permitted sender) X-PHP-List-Original-Sender: cmbecker69@gmx.de X-Host-Fingerprint: 212.227.17.22 mout.gmx.net Received: from [212.227.17.22] ([212.227.17.22:60112] helo=mout.gmx.net) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 25/EB-12403-7D8AE575 for ; Mon, 13 Jun 2016 08:36:39 -0400 Received: from [192.168.2.102] ([217.82.228.97]) by mail.gmx.com (mrgmx103) with ESMTPSA (Nemesis) id 0MfmZs-1apQZl1lJ6-00NDc8; Mon, 13 Jun 2016 14:36:29 +0200 To: Bob Weinand , Christoph Becker References: <68b821ac-d71f-4be5-8dca-ae94db332630@gmail.com> <20160603101659.D466A1A81FC5@dd1730.kasserver.com> <6d448fd8-8fda-d795-accb-6b96cd128ccd@gmail.com> <652fdc5a-a164-2054-ed61-305a2b72330a@gmail.com> <20160603142421.346B81A81725@dd1730.kasserver.com> <9814df22-9854-616b-bf02-d0742efefaff@gmail.com> <20160603145857.8413F1A8323C@dd1730.kasserver.com> <1fb072b3-9b9e-1dfd-6b39-7875587b6c7d@seld.be> <5751B50F.2090003@garfieldtech.com> <9c759795-a702-4f02-7eba-f1bd6fcb4ec2@gmx.de> Cc: Keller Niklas , Larry Garfield , internals@lists.php.net Message-ID: <0fa8465c-9a1c-6328-2573-73c754022bc2@gmx.de> Date: Mon, 13 Jun 2016 14:36:41 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K0:b+dU1ah6KEWh2aZbL8vbMdHpSMSYUspreudNm8Hobo2AZb/wE16 yyjEuVYRnupodTtX2V9GtFP+O1pxYnEPFsN0lRXXWvgyPIC9t6u7Vs7r5uNhZOETdi5FRxm Uy0CI3vR02tNyTMnt3vFtCqIZI554bK/H/u6+9hliL8apjZrpvk0DbfzhT/vGCQ0xMSIyf4 crjSOElMFpS8a4X6DKKkA== X-UI-Out-Filterresults: notjunk:1;V01:K0:+w2zSvQX5ws=:8j42iUvZOHAk6PKVDDM8ly j4O6XmiPvIe/l4jU5srA9yQZXg88LMweB53ymn71X/9X9UxIAq+O7KfTjeijkR94YiDy/QABU IzOipToqeOCan/C/OPbHusZuuAbvHLxM1g/QxbQpT61KqrS6QsSh1OG5cRYzenqGEclLudnsm KX+mIpdqirNvPy361N+ThXxRWlW/mwx3Mkd4rAL8zEojFwMzKaCk7rmCuweCYW4DpW8ZMupkw yq6M6yoJUcPsO+LTjYMBiiFoqfBo38Z+ORsD0nIJEmm6RIdFxN39Fs3wLUP/YRWeZrDX1Phc6 JQXYjxaAXIqaQqhxSfshbrqaYzUO3fqEWUsp/XVSfxfjN6GQjS06i8DJAmDGCKd8EXsBUJmXv aBlIAgb9AfrUdks8qXXrdikvUFYeLRF0/Bzx/V4CRseeB0WdOHqLtdsyH5g84tybnNBCb3kXz FOobmqeCY91wBJJSIMYg8Iuccawv8xjbPvT1+UHBe89YZe0+5GNnGm2OxQEgl+VikDr6pneG1 mUVeJ3SXyF0jzRCGMsgZAnEm20UGZwFQnE+rSRPoNAbfXQXb3M+C85Uqk7Ab4gHWecijMz5/N nlFiy9wKin9AgmFtBt9LE8zERSzuWQ8bBWLAaACZbdlH4Be+km0Mq0a62jl8LttS7hFxPEEEV q1oH85M9dSkMdG+WY+OM8Qxnoa/aZgRlIPXcUu+yKs1Zcn3gsbp2IyunSsUAXOseLBTfMXHIz 3toZSPDHsNdVQzGJcaC/dVkXLM+akkU6kHfh3RCJLx7YrLEGAOl5oAfImD0YSrPmhJZche8Cf vomof44 Subject: Re: [PHP-DEV] [RFC] [PRE-VOTE] Union types From: cmbecker69@gmx.de (Christoph Becker) On 04.06.2016 at 16:37, Bob Weinand wrote: >> Am 4.6.2016 um 16:17 schrieb Christoph Becker : >> >> On 04.06.2016 at 14:15, Bob Weinand wrote: >> >>>> Am 04.06.2016 um 13:45 schrieb Niklas Keller : >>>> >>>> For Aerys\Host it could also be solved with an interface that just doesn't have any methods. With the disadvantage of callable not being in the same signature anymore. >>> >>> Additionally, this is only possible if you are actually in control on these classes and can change them. If you pull them from a library, no chance. >> >> In which case it might make sense anyway to use adapters. > > For which you then need an adapter for each and every combination of interface (power set without empty set; 2^n - 1 - 15 adapter classes for 4 interfaces). > That’s not a practical solution here. After having a closer look at the referenced code[1], I agree. However, in this case it would still be possible to avoid overloading the function by having a dedicated function for each type (i.e. useCallable(), useMiddleware() etc.) That doesn't appear bad to me. [1] -- Christoph M. Becker