nette / application

🏆 A full-stack component-based MVC kernel for PHP that helps you write powerful and modern web applications. Write less, have cleaner code and your work will bring you joy.

Home Page:https://doc.nette.org/application

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Version 3.0.3 Breaks backwards compatibility

paveljanda opened this issue · comments

Version: ?.?.?

Bug Description

There are BC breaks in between 3.0.2 and 3.0.2 in class Nette\Application\UI\ComponentReflection that causes some libraries to fail. For example: https://github.com/nextras/secured-links/blob/master/src/SecuredLinksControlTrait.php#L55

Steps To Reproduce

Use @secured annotation in nette app when using nette/appplication @ 3.0.3 and nextras/secured-links

Expected Behavior

Not to have BC Breaks in minor releases.

Possible Solution

Maybe saving this BC break for later major release?

Thanks for understanding!

Not related to issue, but is nextras/secured-links still relevant? I believe there's a built-in protection in nette/application 3.x.y by-default which can be disabled by @crossorigin

This is unpleasant, of course, but it was a change in the internal API which nextras/secured-link uses.

Method getParameterType() is not private because it is once used in Presenter. So it is marked as internal (more precisely whole class is marked as internal).

I understand that it actually requires effort to respect that something is internal (definitely compared to private), but unfortunately, there is nothing in PHP as a "package-private class" and as an author, I have a very narrowed room for maneuver so that's why I treat internal as package-private.

(I usually search the addons code to see if the affected function is somewhere used, I probably forgot about it here.)

but is nextras/secured-links still relevant?

Yes, in v3 is by-default protection which works in all modern browsers. It doesn't work in IE11 on Windows < 10, unlike nextras/secured-links.

Ok I understand. Thanks for the info

cc @hrach