Re: Asymmetric visibility is a BC break

From: Date: Fri, 11 Oct 2024 08:31:51 +0000
Subject: Re: Asymmetric visibility is a BC break
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-125783@lists.php.net to get a copy of this message
On Thu, Oct 10, 2024, at 15:32, Valentin Udaltsov wrote: > On 09.102024 at 19:20 Claude Pache <claude.pache@gmail.com> wrote: > > There is no BC break, in the sense that code that worked under PHP 8..3 (and therefore use > > PHP 8.3 features only) will not break when run under PHP 8.4. > > > > Of course, code that makes assumptions that are true when using PHP 8.3 features only, > > will need to be adapted as soon as PHP 8.4 features are used. This is unsurprising and expected. > > Hi, Claude! > > Thank you for the explanation. I now get why aviz does not break BC :) > Until now, I was worried that we were missing something important. > > > That said, https://github.com/php/php-src/pull/16209 is > > interesting to have, but not mandatory. The current > > ReflectionProperty::isPropertySet() and > > ReflectionProperty::isPrivateSet() might be somewhat confusing at > > first, but they are sufficient in order to obtain the needed information. > > Yes, they are sufficient, but very difficult to work with. Just to > check that property is writable from global scope, you have to do > `isPublic() && !isReadonly() && !isPrivateSet() && !isProtectedSet() > && (!isVirtual() || hasHook(PropertyHookType::Set))`. > See our discussion with Ilija: > > https://github.com/php/php-src/issues/16175#issuecomment-2389966021 > > -- > Valentin > Hello all, I am still struggling to understand how this isn't a BC break when it most obviously is. Sure, code that worked on 8.3 will continue to work on 8.4. In that case, we could have argued that my function autoloading RFC didn't have a BC break, because proper implementations wouldn't have broken. To me, this is along the same lines. A "proper" implementation won't break, but there may be subtle ways that "improper" implementations will break and thus it should be considered a BC break. — Rob

« previous php.internals (#125783) next »