Re: Apply strict_types to internal functions

From: Date: Tue, 29 Aug 2023 16:40:12 +0000
Subject: Re: Apply strict_types to internal functions
References: 1 2 3 4 5  Groups: php.internals 
Request: Send a blank email to internals+get-120950@lists.php.net to get a copy of this message
* I think most code actually using strict_types=1 is built with the assumption that internal functions use strict too, so it's entirely possible that the backwards-compatibility issue is so small that we can get away with internal functions just inheriting the userland strict_types On Tue, 29 Aug 2023 at 18:36, Hans Henrik Bergan <divinity76@gmail.com> wrote: > > maybe we could do a > declare(internal_strict_types=1); > on a per-file basis just like the existing userland strict_types? > (name is up for bikeshedding ofc) > > On Tue, 29 Aug 2023 at 17:49, Claude Pache <claude.pache@gmail.com> wrote: > > > > > > > > > Le 29 août 2023 à 15:19, Saki Takamachi <saki@sakiot.com> a écrit : > > > > > >> Hi, > > >> > > >> The larger issue is that higher-order functions do not inherit the > > >> strict_types mode from its calling code, and this is not specific to > > >> internal functions. > > >> > > >> If you intend to change that for internal functions (with proper deprecation > > >> period, of course), you might consider making such a behaviour also possible for userland functions > > >> (probably using some opt-in); so that future higher-order internal functions do not become > > >> impossible to polyfill. > > >> > > >> —Claude > > > > > > Hi, thank you for confirming. > > > > > > If you simply put the problem you pointed out in the code, would it be something like > > > this? > > > > > > https://gist.github.com/SakiTakamachi/8292dbfe92a2029a6c7b506b12296b7d > > > > > > Admittedly, I don't think this is intuitive either. > > > > That might not be intuitive to you, but it follows directly from the specified semantics: > > whether a function is called in strict_types mode or not, depends > > only on where the function is called. I personally doubt that there is an easy way to adjust the > > rule in order to make it both “intuitive” and simple. > > > > > > > > [...] > > > > > > When considering the inheritance of strict_types, I think that it should be an > > > attribute that can be set in “php.ini" instead of being specified for each file. > > > > > > What do you think? > > > > Beware that there are many third-party packages that have not opted for > > strict_types=1; if you enable that mode globally, you might make > > those packages malfunction. > > > > As I have just checked, among the packages I’ve installed via composer, there are more > > packages that do not use strict_types=1, than packages that use it. > > Among those that don’t use strict_types, the following ones are > > fairly common: > > > > google/apiclient > > league/oauth2-client > > michelf/php-markdown > > microsoft/microsoft-graph > > phpmailer/phpmailer > > phpoffice/phpspreadsheet > > phpseclib/phpseclib > > > > —Claude > > > > -- > > PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: https://www.php.net/unsub.php > >

« previous php.internals (#120950) next »