Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:116246 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 65561 invoked from network); 8 Oct 2021 08:10:04 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 8 Oct 2021 08:10:04 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id DDD2C180546 for ; Fri, 8 Oct 2021 01:55:12 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: ** X-Spam-Status: No, score=2.3 required=5.0 tests=BAYES_05,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_SOFTFAIL autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS47764 94.100.176.0/20 X-Spam-Virus: No X-Envelope-From: Received: from smtpng1.i.mail.ru (smtpng1.i.mail.ru [94.100.181.251]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Fri, 8 Oct 2021 01:55:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xakep.ru; s=mailru; h=Content-Transfer-Encoding:Content-Type:Subject:From:To:MIME-Version:Date:Message-ID:From:Subject:Content-Type:Content-Transfer-Encoding:To:Cc; bh=WBmOpq+Vk+/Mgw0HRF7sIreYVUwQKQ1wGPTnFS2XmMk=; t=1633683312;x=1634288712; b=BbU5q66ksDMN1xV0Ia/dh+c8OeKhe5LK8cED9s9GX1j/qvDflfPA1A/KZDWF42LKx6u00lLqL1zT/zsT4sKf4ERmhOTlSUa8AzFmM0AtH0AqKrhJ+9fx17mHKHRjTVZXELs2kNXqXbZ39Q5asQfGsHmZqFM/Et9yfc4YEPnUS+8=; Received: by smtpng1.m.smailru.net with esmtpa (envelope-from ) id 1mYlen-0000bi-Aw for internals@lists.php.net; Fri, 08 Oct 2021 11:55:09 +0300 Message-ID: <10318ac4-cd8e-ad3d-ee2f-1700b987ce6d@xakep.ru> Date: Fri, 8 Oct 2021 11:55:08 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.1.2 Content-Language: ru To: internals@lists.php.net Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Authentication-Results: smtpng1.m.smailru.net; auth=pass smtp.auth=nesk@xakep.ru smtp.mailfrom=nesk@xakep.ru X-174C08C4: 5188C02AEC42908C481ED7ADC579193296BBA28369E3F2D2713F3D5F7D406D31BCF678C7329BA986 X-4EC0790: 10 X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD9A6D4E3B1981C4C7DC8C09104FADB757A98AD8127042C5321182A05F538085040DD2FB7CEF3CD14FD9AB17E8EF7FEB6771FDC5B65B1745F2F9FD4A67374EF35B4 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE79B4AFF82F0254274EA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637145E7A1B378D9E388638F802B75D45FF36EB9D2243A4F8B5A6FCA7DBDB1FC311F39EFFDF887939037866D6147AF826D8054367BDA57DD9E9E143A4F4FAC46EBE117882F4460429724CE54428C33FAD305F5C1EE8F4F765FC566404C906FA8ADEA471835C12D1D9774AD6D5ED66289B52BA9C0B312567BB23117882F446042972877693876707352026055571C92BF10FE5D25F19253116ADD2E47CDBA5A96583BA9C0B312567BB231DD303D21008E29813377AFFFEAFD269A417C69337E82CC2E827F84554CEF50127C277FBC8AE2E8BA83251EDC214901ED5E8D9A59859A8B6AC294AFEFA671E80089D37D7C0E48F6C5571747095F342E88FB05168BE4CE3AF X-C1DE0DAB: 8BD88D57C5CADBC8B2710865C38675100C461A8EAC8A3E0BA3B1A56EE2B804F6B226C914C996894645FD9D8A29397D6EFF55FE49A3C2BFCFC8C84E951CD0BE2F296C473AB1E14218EA052B563B0B06C67866D6147AF826D8054367BDA57DD9E9E143A4F4FAC46EBEF972CCD2F8FE1EF1CFC4036BBF6A4EA993ABF9E41C00B5B79C5DF10A05D560A97E15B380B3B81456F2DBB7B6E8D169887C2C444EFFAAB3F1BDAD6C7F3747799A X-C8649E89: 4E36BF7865823D7055A7F0CF078B5EC49A30900B95165D34FDC9529E4578B99CE337BEB4A09F04AB6876A05AB2950AA1831741D69088359FF0450367303870891D7E09C32AA3244CE4CA08CFD0502C232F4C2792A79B891FE8FBBEFAE1C4874C3EB3F6AD6EA9203E X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojbL9S8ysBdXj3T59kXmpGbOfHy+vGdvra X-Mailru-Sender: 689FA8AB762F7393C37E3C1AEC41BA5D25E1FC8621BAABCD895C72F77F970EA891B9B00CB7B9FE65A39385D9CD6901BDB7EA9FE7735C3DBF892C3161A2C0D976DBA35BBDD4EE2B5D6C18EFA0BB12DBB0 X-Mras: Ok Subject: Change yield interpolation behaviour From: nesk@xakep.ru (Nesmeyanov Kirill) Hello Internals! At the moment, there is a feature/bug in the PHP that allows to use interpolation of generators. ``` $code = << <<valid()) {        $params[] = $generator->current(); // Get the value from "yield"        $generator->send('?'); // Insert placeholder     }     return [$generator->getReturn()]; } ``` Causes an error: ``` Warning: Undefined variable $? ``` That is, the expression "${yield 42}" expects back not the result of this expression, but the name of the variable. Therefore, a complete and workable implementation of such a functionality is as follows: https://gist.github.com/SerafimArts/2e7702620480fbce6c24bc87bfb9cb0e I think it makes sense to do something about it. I have two suggestions: 1) Forbid using "yield" inside strings 2) Expect not a variable name as a result of this expression, but a substitution value. What do you think?