Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:116675 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 94328 invoked from network); 17 Dec 2021 17:33:43 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 17 Dec 2021 17:33:43 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 3D0401804E3 for ; Fri, 17 Dec 2021 10:36:29 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_20,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,NICE_REPLY_A, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS15169 209.85.128.0/17 X-Spam-Virus: No X-Envelope-From: Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Fri, 17 Dec 2021 10:36:28 -0800 (PST) Received: by mail-pj1-f45.google.com with SMTP id v16so3042155pjn.1 for ; Fri, 17 Dec 2021 10:36:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:content-language:to :references:from:in-reply-to:content-transfer-encoding; bh=WipTCl396boPTgQjXNX0dEF3T9SpK3P4xszYiLX+SUs=; b=ThwtgjlYYoG9RkNLiMts4u7NoKFTG9ATHNpsgIt0IhXlo48E/uI73JOJEvcdB6HRSN 8Fv1Vqn1s3L/+EVsN8sMMpAl5/tjffDejNSsuzfKUfxCn3DlXeAiuXsHPU34P5bINqHK 3Z3w3svLSIn8cw30IpTJKlA0k18FtuO0mn5gVMKkO+M/odmLLp85AzzFW04udt0Scmto xWtxBKn+qQEYRvc2aP7u+ISc0zA9hSuVi3CR+Ojp9lTvpS7+BNT51iMGDdczEVsNTZF/ paQSPc2Rhir4x0PBOX0hUIq6+DzBgQRi9SPWd9WVtD42ELzed3+bZDtp1NiR7pMxcS/M 2edQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=WipTCl396boPTgQjXNX0dEF3T9SpK3P4xszYiLX+SUs=; b=H1k5vvRD5rILfZcAUrwih3y2uBW/H6/snipVFvCfd0D9yj9SREQWedk+ZJgNROv4gI ClqNe7D7haf2AGM4M2HEe+vKYP5w/roWywAsMffKqKIY3cWlxEW5mr5s09MCecmB7P+x 68eCV5ydeG6t1gz8x80z4f1LCLQCfYBjZbxvbqRsR4+im+rlL4htvLLFGgyKx2VWyCBi VbkIUIiRyGr3pl+tX/CttK6pEepen51ZJpOK090pmOAdKg02ZE8HhpxbHI5BTf/CGc3F EurQk60D+aj9GacDXQjrVjtQsPn/8rzukyPJU1sSB88WlNVSMovPi+K6toeDi0sRcEM2 JDKA== X-Gm-Message-State: AOAM531JqIFYtCYHTve2HK002Jbj5NpQ+7z046F603TZ42hM7z5c66/e MRHH82+Frpzj1GZAWoC4Ua2MDNU6J9lP X-Google-Smtp-Source: ABdhPJzcdAUmmP2OrwCJcB5ZyAVyzRlm3teUyKCO6/eC9IBoMAoRVVp0uA6IPWl6SopJGiGugRB3mw== X-Received: by 2002:a17:903:11c7:b0:148:a86b:16f with SMTP id q7-20020a17090311c700b00148a86b016fmr4657529plh.108.1639766187501; Fri, 17 Dec 2021 10:36:27 -0800 (PST) Received: from [10.230.0.28] (ec2-44-226-30-91.us-west-2.compute.amazonaws.com. [44.226.30.91]) by smtp.gmail.com with ESMTPSA id a18sm9315988pfn.185.2021.12.17.10.36.26 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 17 Dec 2021 10:36:26 -0800 (PST) Message-ID: <67431363-cd1e-9575-7d51-0f4d265d05b9@gmail.com> Date: Fri, 17 Dec 2021 10:36:25 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Firefox/91.0 Thunderbird/91.4.0 Content-Language: en-US To: internals@lists.php.net References: <44b3fb4b-4693-1639-c8c0-5e17296c196e@gmail.com> <4b58c011-ed87-ba87-201d-0cf8e4116c6f@processus.org> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [PHP-DEV] [RFC] User Defined Operator Overloads (v0.6) From: smalyshev@gmail.com (Stanislav Malyshev) Hi! On 12/17/21 9:43 AM, Matt Fonda wrote: > Hi Jordan, > > Thanks for the RFC. I have a couple questions: > > Suppose I have classes Foo and Bar, and I want to support the following > operations: > > - Foo * Bar (returns Foo) > - Bar * Foo (returns Foo) > > If I understand correctly, there are three possible ways I could implement > this: And that's one of the reasons I feel so uneasy with this. When reading this code: $foo * $bar - how do I know which of the ways you took and where should I look for the code that is responsible for it? When I see $foo->times($bar) it's clear who's in charge and where I find the code. Terse code is nice but not at the expense of making it write-only. -- Stas Malyshev smalyshev@gmail.com