Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow stringable objects in sprintf() values #10231

Merged
merged 3 commits into from
Sep 29, 2023

Conversation

MidnightDesign
Copy link
Contributor

No description provided.

@MidnightDesign
Copy link
Contributor Author

Another option would be to use stringable-object and allow it in any version because that's also worked forever.

@orklah
Copy link
Collaborator

orklah commented Sep 28, 2023

yeah, stringable-object is more correct here I think

@MidnightDesign
Copy link
Contributor Author

@orklah I've updated the PR.

@MidnightDesign
Copy link
Contributor Author

MidnightDesign commented Sep 28, 2023

Well, that's tricky. What should we do with the failing tests? Now it is an implicit cast, which might not be what the developer intended. That's why I used the (somewhat more explicit) Stringable in the first place.

Why not just leave it as-is and disallow any implicit cast?

I'm also using Infection, which has a "remove the type cast" mutator. So there's a tension between the two tools and I have to decide which one to suppress.

Both Psalm and Infection are somewhat right, in my opinion. On one hand, you probably don't want to accidentally cast an object to a string. On the other hand, you don't need to litter your code with string casts of Stringables if the outcome is the same. I'm leaning more towards Infection's side here, at least when the object explicitly implements Stringable.

@maks-rafalko Do you have any opinions here?

@orklah
Copy link
Collaborator

orklah commented Sep 28, 2023

Wow, a lot of things to unpack here.

First thing, I'm not too happy to see that Stringable and stringable-object don't behave similarly here (given that tests runs on a recent PHP version, I'd expect no difference in behavior). This is probably a bug that should be fixed

I told you to use stringable-object because I'm not actually sure what using Stringable does when analyzing an old codebase (that shouldn't be aware of the symbol Stringable or may have implemented it themselves), so I think stubs designed for every php version should avoid using it.

Second thing, I disagree with the current failing test implicitCastWithStrictTypesToEchoOrSprintf.

While passing an object to sprintf is absolutely an implicit cast to string, it's not what the issue exists in Psalm for.

The doc gives us a snippet as an example: https://psalm.dev/docs/running_psalm/issues/ImplicitToStringCast/

While the code runs absolutely fine, there's an issue when we use strict_types on the snippet: https://3v4l.org/M1Wr5

The example crashes because the function expects a string (and not a stringable-object or a Stringable)

That's what the issue is for, so that people who want to catch that kind of thing can spot and fix them.

However, sprintf doesn't expect a string: https://3v4l.org/v3tbR so it doesn't fail, even in strict_types. So there's no reason to have this error pops up here and infection is probably correct by telling you it's redundant (unlike the first snippet I shared where you are required to add a cast to string to resolve the issue)

So, you adding stringable-object is actually a good thing and the failing test should be removed (though it doesn't explain why the test was not failing when you explicitly allowed Stringable, it will have to be investigated...)

@MidnightDesign
Copy link
Contributor Author

So the rule is meant to specifically emulate the behavior of adding strict_types? Then I agree, that's reasonable. I've removed the test.

@MidnightDesign MidnightDesign changed the title Allow Stringable in sprintf() values Allow stringable objects in sprintf() values Sep 29, 2023
@orklah
Copy link
Collaborator

orklah commented Sep 29, 2023

So the rule is meant to specifically emulate the behavior of adding strict_types

I'm not sure it was ever explicited like that but it's the only way it would make sense. Psalm is made to work almost the same with or without strict_types, however, the implicit cast to string is only made without strict_types, which makes Psalm in a tricky position. We have to warn users that this may break but they need to be able to easily suppress this if they don't want to care about strict_types

Otherwise, requiring a cast to string is more a code style rule than a static analysis one

@orklah
Copy link
Collaborator

orklah commented Sep 29, 2023

Thanks!

@orklah orklah added the release:fix The PR will be included in 'Fixes' section of the release notes label Sep 29, 2023
@orklah orklah merged commit db07b05 into vimeo:5.x Sep 29, 2023
49 of 51 checks passed
@MidnightDesign MidnightDesign deleted the sprintf-stringable-values branch September 29, 2023 09:39
tcarrio referenced this pull request in open-feature/php-sdk Nov 23, 2023
[![Mend Renovate logo
banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [vimeo/psalm](https://togithub.com/vimeo/psalm) | `~5.15.0` ->
`~5.16.0` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/vimeo%2fpsalm/5.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/vimeo%2fpsalm/5.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/vimeo%2fpsalm/5.15.0/5.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/vimeo%2fpsalm/5.15.0/5.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>vimeo/psalm (vimeo/psalm)</summary>

### [`v5.16.0`](https://togithub.com/vimeo/psalm/releases/tag/5.16.0)

[Compare
Source](https://togithub.com/vimeo/psalm/compare/5.15.0...5.16.0)

<!-- Release notes generated using configuration in .github/release.yml
at 5.x -->

#### What's Changed

##### Features

- Show success message and type stats with GHA formatter by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10145](https://togithub.com/vimeo/psalm/pull/10145)
- New sinks for TaintedCallable
[#&#8203;10117](https://togithub.com/vimeo/psalm/issues/10117) by
[@&#8203;cgocast](https://togithub.com/cgocast) in
[https://github.com/vimeo/psalm/pull/10154](https://togithub.com/vimeo/psalm/pull/10154)
- Properly inherit assertions from parents or implemented faces by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10157](https://togithub.com/vimeo/psalm/pull/10157)
- Flag invalid declares by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10176](https://togithub.com/vimeo/psalm/pull/10176)
- Narrow `ArrayObject` `TKey` template by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10190](https://togithub.com/vimeo/psalm/pull/10190)
- Allow object assertions for `mixed` values by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10207](https://togithub.com/vimeo/psalm/pull/10207)
- Issue handlers priority by
[@&#8203;gmessier](https://togithub.com/gmessier) in
[https://github.com/vimeo/psalm/pull/10202](https://togithub.com/vimeo/psalm/pull/10202)
- Check for declare strict_types in block mode by
[@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10234](https://togithub.com/vimeo/psalm/pull/10234)
- feat(LSP): Improve the autocomplete for nested array shape by
[@&#8203;ging-dev](https://togithub.com/ging-dev) in
[https://github.com/vimeo/psalm/pull/10230](https://togithub.com/vimeo/psalm/pull/10230)
- Add alias support to psalm-check-type by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10264](https://togithub.com/vimeo/psalm/pull/10264)
- Allow parameter names in callable docblocks with templates by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10261](https://togithub.com/vimeo/psalm/pull/10261)
- Disallow `never` type for parameters by
[@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10266](https://togithub.com/vimeo/psalm/pull/10266)
- Fix auto completion by partial property or method by
[@&#8203;issidorov](https://togithub.com/issidorov) in
[https://github.com/vimeo/psalm/pull/10320](https://togithub.com/vimeo/psalm/pull/10320)
- Add stubs for rdKafka by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10351](https://togithub.com/vimeo/psalm/pull/10351)
- Suppressing NoValue should not treat subsequent code as unevaluated by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10303](https://togithub.com/vimeo/psalm/pull/10303)
- Fix misc callable bugs by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10370](https://togithub.com/vimeo/psalm/pull/10370)

##### Fixes

- Added more gc_status return fields by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10138](https://togithub.com/vimeo/psalm/pull/10138)
- Filter baseline when checking individual files by
[@&#8203;edsrzf](https://togithub.com/edsrzf) in
[https://github.com/vimeo/psalm/pull/10115](https://togithub.com/vimeo/psalm/pull/10115)
- Assertion enhancements regarding `value-of` in combination with backed
enums by [@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10150](https://togithub.com/vimeo/psalm/pull/10150)
- `strrchr()`: `$before_needle` parameter by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10151](https://togithub.com/vimeo/psalm/pull/10151)
- Update `mysqli` stub by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10155](https://togithub.com/vimeo/psalm/pull/10155)
- Fix crash on property access to undefined property on a class with a
missing dependncy by [@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10159](https://togithub.com/vimeo/psalm/pull/10159)
- Prevent infinite-loop when resolving type-aliases by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10156](https://togithub.com/vimeo/psalm/pull/10156)
- InheritorViolation was only being triggered on grand-childen classes
by [@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10169](https://togithub.com/vimeo/psalm/pull/10169)
- Restore support for namespaced functions in referencedFunction config
by [@&#8203;tscni](https://togithub.com/tscni) in
[https://github.com/vimeo/psalm/pull/10186](https://togithub.com/vimeo/psalm/pull/10186)
- `DateTimeZone::getName()` always returns `non-empty-string` by
[@&#8203;gsteel](https://togithub.com/gsteel) in
[https://github.com/vimeo/psalm/pull/10187](https://togithub.com/vimeo/psalm/pull/10187)
- Only the binary op 'plus' works with two arrays by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10209](https://togithub.com/vimeo/psalm/pull/10209)
- Add openssl_\*\_export_to_file to impure functions by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10210](https://togithub.com/vimeo/psalm/pull/10210)
- add FILTER_SANITIZE_URL filter to filter_var by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10214](https://togithub.com/vimeo/psalm/pull/10214)
- Allow class-string<T> where T is a union by
[@&#8203;MidnightDesign](https://togithub.com/MidnightDesign) in
[https://github.com/vimeo/psalm/pull/10194](https://togithub.com/vimeo/psalm/pull/10194)
- Loop over PDOStatement::fetch() arguments by
[@&#8203;cgocast](https://togithub.com/cgocast) in
[https://github.com/vimeo/psalm/pull/10237](https://togithub.com/vimeo/psalm/pull/10237)
- Inherited assertions v2 by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10189](https://togithub.com/vimeo/psalm/pull/10189)
- Resolve inherited conditional return types by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10191](https://togithub.com/vimeo/psalm/pull/10191)
- Allow stringable objects in `sprintf()` values by
[@&#8203;MidnightDesign](https://togithub.com/MidnightDesign) in
[https://github.com/vimeo/psalm/pull/10231](https://togithub.com/vimeo/psalm/pull/10231)
- fix: [#&#8203;10239](https://togithub.com/vimeo/psalm/issues/10239) by
[@&#8203;ging-dev](https://togithub.com/ging-dev) in
[https://github.com/vimeo/psalm/pull/10240](https://togithub.com/vimeo/psalm/pull/10240)
- Remove duplicate namespace in InternalMethod error message by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10241](https://togithub.com/vimeo/psalm/pull/10241)
- Add stream_socket_shutdown socket_shutdown to impure function list by
[@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10244](https://togithub.com/vimeo/psalm/pull/10244)
- Emit `MethodSignatureMismatch` when descendant does not return by
reference by [@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10248](https://togithub.com/vimeo/psalm/pull/10248)
- Negated class_exist check on class-string converts to string instead
of mixed by [@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10262](https://togithub.com/vimeo/psalm/pull/10262)
- Fix error message for implicitly returning functions with `never`
return type by [@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10254](https://togithub.com/vimeo/psalm/pull/10254)
- Type check nested templates by
[@&#8203;klimick](https://togithub.com/klimick) in
[https://github.com/vimeo/psalm/pull/10271](https://togithub.com/vimeo/psalm/pull/10271)
- Fix return of BadSqlTainter::afterExpressionAnalysis() by
[@&#8203;cgocast](https://togithub.com/cgocast) in
[https://github.com/vimeo/psalm/pull/10270](https://togithub.com/vimeo/psalm/pull/10270)
- Allow tainted numerics except for 'html' and 'has_quotes' by
[@&#8203;cgocast](https://togithub.com/cgocast) in
[https://github.com/vimeo/psalm/pull/10242](https://togithub.com/vimeo/psalm/pull/10242)
- fix final class constant type by
[@&#8203;kk-daniel](https://togithub.com/kk-daniel) in
[https://github.com/vimeo/psalm/pull/10279](https://togithub.com/vimeo/psalm/pull/10279)
- Fix inferring enum case value from a class constant by
[@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10274](https://togithub.com/vimeo/psalm/pull/10274)
- fix: [#&#8203;10080](https://togithub.com/vimeo/psalm/issues/10080) by
[@&#8203;ging-dev](https://togithub.com/ging-dev) in
[https://github.com/vimeo/psalm/pull/10228](https://togithub.com/vimeo/psalm/pull/10228)
- Fix memory explosion with calls to method_exists by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10290](https://togithub.com/vimeo/psalm/pull/10290)
- Additional caching fixes by
[@&#8203;ging-dev](https://togithub.com/ging-dev) in
[https://github.com/vimeo/psalm/pull/10289](https://togithub.com/vimeo/psalm/pull/10289)
- str_replace / substr_replace signature improvements by
[@&#8203;mathroc](https://togithub.com/mathroc) in
[https://github.com/vimeo/psalm/pull/10277](https://togithub.com/vimeo/psalm/pull/10277)
- Fix method calls and property accesses after extension_loaded by
[@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10295](https://togithub.com/vimeo/psalm/pull/10295)
- fix [@&#8203;param-out](https://togithub.com/param-out) with named
arguments by [@&#8203;kk-daniel](https://togithub.com/kk-daniel) in
[https://github.com/vimeo/psalm/pull/10312](https://togithub.com/vimeo/psalm/pull/10312)
- Narrow down `get_browser` returning array or object by
[@&#8203;simonberger](https://togithub.com/simonberger) in
[https://github.com/vimeo/psalm/pull/10314](https://togithub.com/vimeo/psalm/pull/10314)
- Allow int keys when calling Redis methods by
[@&#8203;greg0ire](https://togithub.com/greg0ire) in
[https://github.com/vimeo/psalm/pull/10355](https://togithub.com/vimeo/psalm/pull/10355)
- Finding methods and properties for auto completion feature by
[@&#8203;issidorov](https://togithub.com/issidorov) in
[https://github.com/vimeo/psalm/pull/10385](https://togithub.com/vimeo/psalm/pull/10385)
- update decimal stubs from documented URL by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10379](https://togithub.com/vimeo/psalm/pull/10379)
- Fix Phar build failure by [@&#8203;tscni](https://togithub.com/tscni)
in
[https://github.com/vimeo/psalm/pull/10391](https://togithub.com/vimeo/psalm/pull/10391)
- Fix redundant condition mixed type escape hatch & loose comparison int
type shouldnt be mixed by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10388](https://togithub.com/vimeo/psalm/pull/10388)
- Fix [#&#8203;10398](https://togithub.com/vimeo/psalm/issues/10398):
add missing methods of ReflectionProperty class in CallMap and CallMap
deltas. by [@&#8203;niconoe-](https://togithub.com/niconoe-) in
[https://github.com/vimeo/psalm/pull/10399](https://togithub.com/vimeo/psalm/pull/10399)

##### Docs

- docs: A semicolon expected by
[@&#8203;lens0021](https://togithub.com/lens0021) in
[https://github.com/vimeo/psalm/pull/10149](https://togithub.com/vimeo/psalm/pull/10149)
- Add documentation for
[@&#8203;psalm-flow](https://togithub.com/psalm-flow) by
[@&#8203;ohader](https://togithub.com/ohader) in
[https://github.com/vimeo/psalm/pull/10349](https://togithub.com/vimeo/psalm/pull/10349)

##### Internal changes

- Extract the list of impure functions into its own dictionary by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10136](https://togithub.com/vimeo/psalm/pull/10136)
- `composer.json` tweaks by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10161](https://togithub.com/vimeo/psalm/pull/10161)
- Bump actions/checkout from 3 to 4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/vimeo/psalm/pull/10192](https://togithub.com/vimeo/psalm/pull/10192)
- Update IssueBuffer.php by
[@&#8203;aleksandr-shevchenko](https://togithub.com/aleksandr-shevchenko)
in
[https://github.com/vimeo/psalm/pull/10294](https://togithub.com/vimeo/psalm/pull/10294)
- Backport rector fixes to 5.x by
[@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10306](https://togithub.com/vimeo/psalm/pull/10306)
- Bump fkirc/skip-duplicate-actions from 5.3.0 to 5.3.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/vimeo/psalm/pull/10313](https://togithub.com/vimeo/psalm/pull/10313)
- Allow Symfony 7 by [@&#8203;kbond](https://togithub.com/kbond) in
[https://github.com/vimeo/psalm/pull/10335](https://togithub.com/vimeo/psalm/pull/10335)
- Get rid of legacy 7.3 logic by
[@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10319](https://togithub.com/vimeo/psalm/pull/10319)
- Finalize all internal classes by
[@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10318](https://togithub.com/vimeo/psalm/pull/10318)
- fix CI "split" unevenly splits the number of tests by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10389](https://togithub.com/vimeo/psalm/pull/10389)
- Fix circleci builds by [@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10396](https://togithub.com/vimeo/psalm/pull/10396)

##### Other changes

- Add exec output param out by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10128](https://togithub.com/vimeo/psalm/pull/10128)

#### New Contributors

- [@&#8203;lens0021](https://togithub.com/lens0021) made their first
contribution in
[https://github.com/vimeo/psalm/pull/10149](https://togithub.com/vimeo/psalm/pull/10149)
- [@&#8203;kk-daniel](https://togithub.com/kk-daniel) made their first
contribution in
[https://github.com/vimeo/psalm/pull/10279](https://togithub.com/vimeo/psalm/pull/10279)
-
[@&#8203;aleksandr-shevchenko](https://togithub.com/aleksandr-shevchenko)
made their first contribution in
[https://github.com/vimeo/psalm/pull/10294](https://togithub.com/vimeo/psalm/pull/10294)
- [@&#8203;simonberger](https://togithub.com/simonberger) made their
first contribution in
[https://github.com/vimeo/psalm/pull/10314](https://togithub.com/vimeo/psalm/pull/10314)
- [@&#8203;kbond](https://togithub.com/kbond) made their first
contribution in
[https://github.com/vimeo/psalm/pull/10335](https://togithub.com/vimeo/psalm/pull/10335)
- [@&#8203;issidorov](https://togithub.com/issidorov) made their first
contribution in
[https://github.com/vimeo/psalm/pull/10320](https://togithub.com/vimeo/psalm/pull/10320)

**Full Changelog**:
vimeo/psalm@5.15.0...5.16.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/open-feature/php-sdk).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy41OS44IiwidXBkYXRlZEluVmVyIjoiMzcuNTkuOCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
oguzhand95 referenced this pull request in cerbos/cerbos-sdk-php Nov 24, 2023
[![Mend Renovate logo
banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [google/protobuf](https://developers.google.com/protocol-buffers/)
([source](https://togithub.com/protocolbuffers/protobuf-php)) | `3.25.0`
-> `3.25.1` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/google%2fprotobuf/3.25.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/google%2fprotobuf/3.25.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/google%2fprotobuf/3.25.0/3.25.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/google%2fprotobuf/3.25.0/3.25.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [phpstan/phpstan](https://togithub.com/phpstan/phpstan) | `1.10.41` ->
`1.10.44` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/phpstan%2fphpstan/1.10.44?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/phpstan%2fphpstan/1.10.44?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/phpstan%2fphpstan/1.10.41/1.10.44?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/phpstan%2fphpstan/1.10.41/1.10.44?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [ramsey/uuid](https://togithub.com/ramsey/uuid) | `4.7.4` -> `4.7.5` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/ramsey%2fuuid/4.7.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/ramsey%2fuuid/4.7.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/ramsey%2fuuid/4.7.4/4.7.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/ramsey%2fuuid/4.7.4/4.7.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [vimeo/psalm](https://togithub.com/vimeo/psalm) | `5.15.0` -> `5.16.0`
|
[![age](https://developer.mend.io/api/mc/badges/age/packagist/vimeo%2fpsalm/5.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/vimeo%2fpsalm/5.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/vimeo%2fpsalm/5.15.0/5.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/vimeo%2fpsalm/5.15.0/5.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>protocolbuffers/protobuf-php (google/protobuf)</summary>

###
[`v3.25.1`](https://togithub.com/protocolbuffers/protobuf-php/compare/v3.25.0...v3.25.1)

[Compare
Source](https://togithub.com/protocolbuffers/protobuf-php/compare/v3.25.0...v3.25.1)

</details>

<details>
<summary>phpstan/phpstan (phpstan/phpstan)</summary>

###
[`v1.10.44`](https://togithub.com/phpstan/phpstan/releases/tag/1.10.44)

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.43...1.10.44)

# Improvements 🔧

- PHP 8.3: support for dynamic class constant fetches
([RFC](https://wiki.php.net/rfc/dynamic_class_constant_fetch))
-   PHP 8.3: support for anonymous readonly class
- RedefinedParametersRule
([#&#8203;2755](https://togithub.com/phpstan/phpstan-src/pull/2755)),
[#&#8203;8025](https://togithub.com/phpstan/phpstan/issues/8025), thanks
[@&#8203;paulbalandan](https://togithub.com/paulbalandan)!
- AbstractPrivateMethodRule
([#&#8203;2756](https://togithub.com/phpstan/phpstan-src/pull/2756)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- ReadOnlyClassRule
(phpstan/phpstan-src@02b2e3d)
- InvalidLexicalVariablesInClosureUseRule
([#&#8203;2757](https://togithub.com/phpstan/phpstan-src/pull/2757)),
[#&#8203;1855](https://togithub.com/phpstan/phpstan/issues/1855), thanks
[@&#8203;paulbalandan](https://togithub.com/paulbalandan)!
- AbstractProtectedMethodRule
([#&#8203;2758](https://togithub.com/phpstan/phpstan-src/pull/2758)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- VarTagTypeRuleHelper: do not allow widening `list<array{id: int}>` to
`mixed[]`
([#&#8203;2760](https://togithub.com/phpstan/phpstan-src/pull/2760)),
thanks [@&#8203;janedbal](https://togithub.com/janedbal)!

# Bugfixes 🐛

- Re-add nullable type to interface to fix `Carbon` PHPStan extension
([#&#8203;2762](https://togithub.com/phpstan/phpstan-src/pull/2762)),
thanks [@&#8203;CalebDW](https://togithub.com/CalebDW)!
- Fix named arguments for few multi-variant methods
([#&#8203;2748](https://togithub.com/phpstan/phpstan-src/pull/2748)),
thanks [@&#8203;schlndh](https://togithub.com/schlndh)!
- Fix overriding `SoapClient` old-style constructor
(phpstan/phpstan-src@7765768),
[#&#8203;10165](https://togithub.com/phpstan/phpstan/issues/10165)
- Apply same fix in MethodSignatureRule from
phpstan/phpstan-src@be2b415
(phpstan/phpstan-src@85fcd5f),
[#&#8203;10166](https://togithub.com/phpstan/phpstan/issues/10166)

# Function signature fixes 🤖

- Remove fake params from `setcookie`/`setrawcookie`
([#&#8203;2752](https://togithub.com/phpstan/phpstan-src/pull/2752)),
[#&#8203;10171](https://togithub.com/phpstan/phpstan/issues/10171),
thanks [@&#8203;schlndh](https://togithub.com/schlndh)!

###
[`v1.10.43`](https://togithub.com/phpstan/phpstan/releases/tag/1.10.43)

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.42...1.10.43)

# Improvements 🔧

-   Update `phpstan/phpdoc-parser`
- Fix HTML description detection for PhpStorm stubs
([https://github.com/phpstan/phpdoc-parser/pull/220](https://togithub.com/phpstan/phpdoc-parser/pull/220)),
thanks [@&#8203;schlndh](https://togithub.com/schlndh)!
- Make `ReflectionEnum` generic
(phpstan/phpstan-src@9ce8faf)

# Bugfixes 🐛

- Merge right scope of `??=` with scope before the expression
(phpstan/phpstan-src@846f44e),
[#&#8203;10151](https://togithub.com/phpstan/phpstan/issues/10151),
[#&#8203;10131](https://togithub.com/phpstan/phpstan/issues/10131)
- Fix return type of parent calls for SplHeap and other internal methods
([#&#8203;2622](https://togithub.com/phpstan/phpstan-src/pull/2622)),
[#&#8203;7162](https://togithub.com/phpstan/phpstan/issues/7162),
[#&#8203;9867](https://togithub.com/phpstan/phpstan/issues/9867), thanks
[@&#8203;schlndh](https://togithub.com/schlndh)!
- `stdClass` does not have `__get` method
(phpstan/phpstan-src@baf359e),
[#&#8203;10149](https://togithub.com/phpstan/phpstan/issues/10149)
- Fix signature check of method from trait
(phpstan/phpstan-src@be2b415),
[#&#8203;10153](https://togithub.com/phpstan/phpstan/issues/10153)
- All `universalObjectCratesClasses` allow dynamic properties
(phpstan/phpstan-src@2ec416e)
- Fix infinite recursion with self-referencing class constant
(phpstan/phpstan-src@93af41b),
[#&#8203;10147](https://togithub.com/phpstan/phpstan/issues/10147)

# Internals 🔍

- Add named arguments variants to reflection golden test
([#&#8203;2743](https://togithub.com/phpstan/phpstan-src/pull/2743)),
thanks [@&#8203;schlndh](https://togithub.com/schlndh)!

###
[`v1.10.42`](https://togithub.com/phpstan/phpstan/releases/tag/1.10.42)

[Compare
Source](https://togithub.com/phpstan/phpstan/compare/1.10.41...1.10.42)

This release closes **25 issues**! 🎉

# Major new features 🚀

- PHP 8.3 - support for natively typed class constants
([RFC](https://wiki.php.net/rfc/typed_class_constants))
- PHP 8.3 - support for `#[\Override]` attribute
(phpstan/phpstan-src@e9a5639)
([RFC](https://wiki.php.net/rfc/marking_overriden_methods))
- New configuration option: `checkMissingOverrideMethodAttribute`
(https://phpstan.org/config-reference#checkmissingoverridemethodattribute)
(phpstan/phpstan-src@ac4d3de)

# Bleeding edge 🔪

- Detect overriding `@final` method in OverridingMethodRule,
[#&#8203;9135](https://togithub.com/phpstan/phpstan/issues/9135)
- MethodSignatureRule - look at abstract trait method
(phpstan/phpstan-src@5fd8cee)
- MagicConstantContextRule
([#&#8203;2741](https://togithub.com/phpstan/phpstan-src/pull/2741)),
[#&#8203;10099](https://togithub.com/phpstan/phpstan/issues/10099),
thanks [@&#8203;staabm](https://togithub.com/staabm)!

*If you want to see the shape of things to come and adopt bleeding edge
features early, you can include this config file in your project's
`phpstan.neon`:*

    includes:
    	- vendor/phpstan/phpstan/conf/bleedingEdge.neon

*Of course, there are no backwards compatibility guarantees when you
include this file. The behaviour and reported errors can change in minor
versions with this file included. [Learn
more](https://phpstan.org/blog/what-is-bleeding-edge)*

# Improvements 🔧

- Add ConstantsInTraitsRule
([#&#8203;2718](https://togithub.com/phpstan/phpstan-src/pull/2718)),
thanks [@&#8203;paulbalandan](https://togithub.com/paulbalandan)!
- Add NoncapturingCatchRule
([#&#8203;2721](https://togithub.com/phpstan/phpstan-src/pull/2721)),
[#&#8203;8663](https://togithub.com/phpstan/phpstan/issues/8663), thanks
[@&#8203;paulbalandan](https://togithub.com/paulbalandan)!
- Detect non-abstract methods with no body
([#&#8203;2730](https://togithub.com/phpstan/phpstan-src/pull/2730)),
[#&#8203;4244](https://togithub.com/phpstan/phpstan/issues/4244), thanks
[@&#8203;paulbalandan](https://togithub.com/paulbalandan)!
- Detect properties declared in interface
([#&#8203;2731](https://togithub.com/phpstan/phpstan-src/pull/2731)),
[#&#8203;8915](https://togithub.com/phpstan/phpstan/issues/8915), thanks
[@&#8203;paulbalandan](https://togithub.com/paulbalandan)!
- Add VariadicParametersDeclarationRule
([#&#8203;2733](https://togithub.com/phpstan/phpstan-src/pull/2733)),
[#&#8203;3802](https://togithub.com/phpstan/phpstan/issues/3802), thanks
[@&#8203;paulbalandan](https://togithub.com/paulbalandan)!
- Add InvalidCallablePropertyTypeRule
([#&#8203;2745](https://togithub.com/phpstan/phpstan-src/pull/2745)),
[#&#8203;4424](https://togithub.com/phpstan/phpstan/issues/4424), thanks
[@&#8203;paulbalandan](https://togithub.com/paulbalandan)!
- ConflictingTraitConstantsRule
(phpstan/phpstan-src@f94a3c3)
- Read class constant type when generalizing the type for
`dynamicConstantNames`
(phpstan/phpstan-src@cb9571b)
- Rework prototype searching in OverridingMethodRule
(phpstan/phpstan-src@4b2ffb8),
[#&#8203;10101](https://togithub.com/phpstan/phpstan/issues/10101),
[#&#8203;7541](https://togithub.com/phpstan/phpstan/issues/7541),
[#&#8203;10043](https://togithub.com/phpstan/phpstan/issues/10043),
[#&#8203;7859](https://togithub.com/phpstan/phpstan/issues/7859),
[#&#8203;8081](https://togithub.com/phpstan/phpstan/issues/8081),
[#&#8203;8500](https://togithub.com/phpstan/phpstan/issues/8500),
[#&#8203;9014](https://togithub.com/phpstan/phpstan/issues/9014)
- OverridingMethodRule - search for method prototype in traits
(phpstan/phpstan-src@2df14af)
- VarTagTypeRuleHelper: fix widening array shapes
([#&#8203;2738](https://togithub.com/phpstan/phpstan-src/pull/2738)),
[#&#8203;10130](https://togithub.com/phpstan/phpstan/issues/10130),
thanks [@&#8203;janedbal](https://togithub.com/janedbal)!
- Note about Xdebug with `--debug`
(phpstan/phpstan-src@c534f8c)
- FunctionSignatureMapProvider - cache data statically
(phpstan/phpstan-src@394064b),
[#&#8203;10039](https://togithub.com/phpstan/phpstan/issues/10039)

# Bugfixes 🐛

- Star projection is always within template type bounds
([#&#8203;2715](https://togithub.com/phpstan/phpstan-src/pull/2715)),
[#&#8203;10097](https://togithub.com/phpstan/phpstan/issues/10097),
thanks [@&#8203;jiripudil](https://togithub.com/jiripudil)!
- Support `non-empty-string` in `str_shuffle()`
([#&#8203;2717](https://togithub.com/phpstan/phpstan-src/pull/2717)),
thanks [@&#8203;staabm](https://togithub.com/staabm)!
- Look if userland prototype has `ReturnTypeWillChange` or not
(phpstan/phpstan-src@eb0c7a1),
[#&#8203;9615](https://togithub.com/phpstan/phpstan/issues/9615)
- Fix wrong tip about returning a list
(phpstan/phpstan-src@00adfaa,
phpstan/phpstan-src@00a9d94)
- Fix parameter names for multi-variant functions
([#&#8203;2726](https://togithub.com/phpstan/phpstan-src/pull/2726)),
[#&#8203;9018](https://togithub.com/phpstan/phpstan/issues/9018),
[#&#8203;9399](https://togithub.com/phpstan/phpstan/issues/9399),
[#&#8203;9923](https://togithub.com/phpstan/phpstan/issues/9923),
[#&#8203;9823](https://togithub.com/phpstan/phpstan/issues/9823), thanks
[@&#8203;schlndh](https://togithub.com/schlndh)!
- Fix iterator_to_array, iterator_count for PHP 8.2
([#&#8203;2625](https://togithub.com/phpstan/phpstan-src/pull/2625)),
[#&#8203;9793](https://togithub.com/phpstan/phpstan/issues/9793),
[#&#8203;7760](https://togithub.com/phpstan/phpstan/issues/7760), thanks
[@&#8203;schlndh](https://togithub.com/schlndh)!
- Update array_filter signature to allow null as callback
([#&#8203;2740](https://togithub.com/phpstan/phpstan/issues/2740))
([#&#8203;2740](https://togithub.com/phpstan/phpstan-src/pull/2740)),
thanks [@&#8203;andyexeter](https://togithub.com/andyexeter)!

# Function signature fixes 🤖

- Fix return value of `mailparse_msg_get_part()`
([#&#8203;2722](https://togithub.com/phpstan/phpstan-src/pull/2722)),
thanks [@&#8203;jlherren](https://togithub.com/jlherren)!
- Update functionMaps
([#&#8203;2699](https://togithub.com/phpstan/phpstan-src/pull/2699)),
thanks [@&#8203;zonuexe](https://togithub.com/zonuexe)!
- Change `iptcparse` return type
([#&#8203;2727](https://togithub.com/phpstan/phpstan-src/pull/2727)),
thanks [@&#8203;ManuelHu](https://togithub.com/ManuelHu)!

# Internals 🔍

- Create DirectoryCreator helper class
([#&#8203;2697](https://togithub.com/phpstan/phpstan-src/pull/2697)),
thanks [@&#8203;CalebDW](https://togithub.com/CalebDW)!
- Use PHP 8.3 in Name Collision Detector
(phpstan/phpstan-src@8cd239e)
- Golden test for reflection
([#&#8203;2679](https://togithub.com/phpstan/phpstan-src/pull/2679)),
thanks [@&#8203;schlndh](https://togithub.com/schlndh)!
- Fully qualify the name of the `#[\Override]` attribute in error
messages
([#&#8203;10136](https://togithub.com/phpstan/phpstan-src/pull/10136)),
thanks [@&#8203;TimWolla](https://togithub.com/TimWolla)!
- RuleTestCase - allow null tip
(phpstan/phpstan-src@f384b43)

</details>

<details>
<summary>ramsey/uuid (ramsey/uuid)</summary>

###
[`v4.7.5`](https://togithub.com/ramsey/uuid/blob/HEAD/CHANGELOG.md#475---2023-11-08)

[Compare Source](https://togithub.com/ramsey/uuid/compare/4.7.4...4.7.5)

##### Fixed

- Protect against UUIDv7 collisions within the same millisecond, as
reported
in [#&#8203;518](https://togithub.com/ramsey/uuid/issues/518) and fixed
in
    [#&#8203;522](https://togithub.com/ramsey/uuid/pull/522).
-   Improve the return type hint for `UuidInterface::compareTo()`.

</details>

<details>
<summary>vimeo/psalm (vimeo/psalm)</summary>

### [`v5.16.0`](https://togithub.com/vimeo/psalm/releases/tag/5.16.0)

[Compare
Source](https://togithub.com/vimeo/psalm/compare/5.15.0...5.16.0)

<!-- Release notes generated using configuration in .github/release.yml
at 5.x -->

#### What's Changed

##### Features

- Show success message and type stats with GHA formatter by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10145](https://togithub.com/vimeo/psalm/pull/10145)
- New sinks for TaintedCallable
[#&#8203;10117](https://togithub.com/vimeo/psalm/issues/10117) by
[@&#8203;cgocast](https://togithub.com/cgocast) in
[https://github.com/vimeo/psalm/pull/10154](https://togithub.com/vimeo/psalm/pull/10154)
- Properly inherit assertions from parents or implemented faces by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10157](https://togithub.com/vimeo/psalm/pull/10157)
- Flag invalid declares by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10176](https://togithub.com/vimeo/psalm/pull/10176)
- Narrow `ArrayObject` `TKey` template by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10190](https://togithub.com/vimeo/psalm/pull/10190)
- Allow object assertions for `mixed` values by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10207](https://togithub.com/vimeo/psalm/pull/10207)
- Issue handlers priority by
[@&#8203;gmessier](https://togithub.com/gmessier) in
[https://github.com/vimeo/psalm/pull/10202](https://togithub.com/vimeo/psalm/pull/10202)
- Check for declare strict_types in block mode by
[@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10234](https://togithub.com/vimeo/psalm/pull/10234)
- feat(LSP): Improve the autocomplete for nested array shape by
[@&#8203;ging-dev](https://togithub.com/ging-dev) in
[https://github.com/vimeo/psalm/pull/10230](https://togithub.com/vimeo/psalm/pull/10230)
- Add alias support to psalm-check-type by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10264](https://togithub.com/vimeo/psalm/pull/10264)
- Allow parameter names in callable docblocks with templates by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10261](https://togithub.com/vimeo/psalm/pull/10261)
- Disallow `never` type for parameters by
[@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10266](https://togithub.com/vimeo/psalm/pull/10266)
- Fix auto completion by partial property or method by
[@&#8203;issidorov](https://togithub.com/issidorov) in
[https://github.com/vimeo/psalm/pull/10320](https://togithub.com/vimeo/psalm/pull/10320)
- Add stubs for rdKafka by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10351](https://togithub.com/vimeo/psalm/pull/10351)
- Suppressing NoValue should not treat subsequent code as unevaluated by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10303](https://togithub.com/vimeo/psalm/pull/10303)
- Fix misc callable bugs by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10370](https://togithub.com/vimeo/psalm/pull/10370)

##### Fixes

- Added more gc_status return fields by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10138](https://togithub.com/vimeo/psalm/pull/10138)
- Filter baseline when checking individual files by
[@&#8203;edsrzf](https://togithub.com/edsrzf) in
[https://github.com/vimeo/psalm/pull/10115](https://togithub.com/vimeo/psalm/pull/10115)
- Assertion enhancements regarding `value-of` in combination with backed
enums by [@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10150](https://togithub.com/vimeo/psalm/pull/10150)
- `strrchr()`: `$before_needle` parameter by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10151](https://togithub.com/vimeo/psalm/pull/10151)
- Update `mysqli` stub by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10155](https://togithub.com/vimeo/psalm/pull/10155)
- Fix crash on property access to undefined property on a class with a
missing dependncy by [@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10159](https://togithub.com/vimeo/psalm/pull/10159)
- Prevent infinite-loop when resolving type-aliases by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10156](https://togithub.com/vimeo/psalm/pull/10156)
- InheritorViolation was only being triggered on grand-childen classes
by [@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10169](https://togithub.com/vimeo/psalm/pull/10169)
- Restore support for namespaced functions in referencedFunction config
by [@&#8203;tscni](https://togithub.com/tscni) in
[https://github.com/vimeo/psalm/pull/10186](https://togithub.com/vimeo/psalm/pull/10186)
- `DateTimeZone::getName()` always returns `non-empty-string` by
[@&#8203;gsteel](https://togithub.com/gsteel) in
[https://github.com/vimeo/psalm/pull/10187](https://togithub.com/vimeo/psalm/pull/10187)
- Only the binary op 'plus' works with two arrays by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10209](https://togithub.com/vimeo/psalm/pull/10209)
- Add openssl_\*\_export_to_file to impure functions by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10210](https://togithub.com/vimeo/psalm/pull/10210)
- add FILTER_SANITIZE_URL filter to filter_var by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10214](https://togithub.com/vimeo/psalm/pull/10214)
- Allow class-string<T> where T is a union by
[@&#8203;MidnightDesign](https://togithub.com/MidnightDesign) in
[https://github.com/vimeo/psalm/pull/10194](https://togithub.com/vimeo/psalm/pull/10194)
- Loop over PDOStatement::fetch() arguments by
[@&#8203;cgocast](https://togithub.com/cgocast) in
[https://github.com/vimeo/psalm/pull/10237](https://togithub.com/vimeo/psalm/pull/10237)
- Inherited assertions v2 by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10189](https://togithub.com/vimeo/psalm/pull/10189)
- Resolve inherited conditional return types by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10191](https://togithub.com/vimeo/psalm/pull/10191)
- Allow stringable objects in `sprintf()` values by
[@&#8203;MidnightDesign](https://togithub.com/MidnightDesign) in
[https://github.com/vimeo/psalm/pull/10231](https://togithub.com/vimeo/psalm/pull/10231)
- fix: [#&#8203;10239](https://togithub.com/vimeo/psalm/issues/10239) by
[@&#8203;ging-dev](https://togithub.com/ging-dev) in
[https://github.com/vimeo/psalm/pull/10240](https://togithub.com/vimeo/psalm/pull/10240)
- Remove duplicate namespace in InternalMethod error message by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10241](https://togithub.com/vimeo/psalm/pull/10241)
- Add stream_socket_shutdown socket_shutdown to impure function list by
[@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10244](https://togithub.com/vimeo/psalm/pull/10244)
- Emit `MethodSignatureMismatch` when descendant does not return by
reference by [@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10248](https://togithub.com/vimeo/psalm/pull/10248)
- Negated class_exist check on class-string converts to string instead
of mixed by [@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10262](https://togithub.com/vimeo/psalm/pull/10262)
- Fix error message for implicitly returning functions with `never`
return type by [@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10254](https://togithub.com/vimeo/psalm/pull/10254)
- Type check nested templates by
[@&#8203;klimick](https://togithub.com/klimick) in
[https://github.com/vimeo/psalm/pull/10271](https://togithub.com/vimeo/psalm/pull/10271)
- Fix return of BadSqlTainter::afterExpressionAnalysis() by
[@&#8203;cgocast](https://togithub.com/cgocast) in
[https://github.com/vimeo/psalm/pull/10270](https://togithub.com/vimeo/psalm/pull/10270)
- Allow tainted numerics except for 'html' and 'has_quotes' by
[@&#8203;cgocast](https://togithub.com/cgocast) in
[https://github.com/vimeo/psalm/pull/10242](https://togithub.com/vimeo/psalm/pull/10242)
- fix final class constant type by
[@&#8203;kk-daniel](https://togithub.com/kk-daniel) in
[https://github.com/vimeo/psalm/pull/10279](https://togithub.com/vimeo/psalm/pull/10279)
- Fix inferring enum case value from a class constant by
[@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10274](https://togithub.com/vimeo/psalm/pull/10274)
- fix: [#&#8203;10080](https://togithub.com/vimeo/psalm/issues/10080) by
[@&#8203;ging-dev](https://togithub.com/ging-dev) in
[https://github.com/vimeo/psalm/pull/10228](https://togithub.com/vimeo/psalm/pull/10228)
- Fix memory explosion with calls to method_exists by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10290](https://togithub.com/vimeo/psalm/pull/10290)
- Additional caching fixes by
[@&#8203;ging-dev](https://togithub.com/ging-dev) in
[https://github.com/vimeo/psalm/pull/10289](https://togithub.com/vimeo/psalm/pull/10289)
- str_replace / substr_replace signature improvements by
[@&#8203;mathroc](https://togithub.com/mathroc) in
[https://github.com/vimeo/psalm/pull/10277](https://togithub.com/vimeo/psalm/pull/10277)
- Fix method calls and property accesses after extension_loaded by
[@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10295](https://togithub.com/vimeo/psalm/pull/10295)
- fix [@&#8203;param-out](https://togithub.com/param-out) with named
arguments by [@&#8203;kk-daniel](https://togithub.com/kk-daniel) in
[https://github.com/vimeo/psalm/pull/10312](https://togithub.com/vimeo/psalm/pull/10312)
- Narrow down `get_browser` returning array or object by
[@&#8203;simonberger](https://togithub.com/simonberger) in
[https://github.com/vimeo/psalm/pull/10314](https://togithub.com/vimeo/psalm/pull/10314)
- Allow int keys when calling Redis methods by
[@&#8203;greg0ire](https://togithub.com/greg0ire) in
[https://github.com/vimeo/psalm/pull/10355](https://togithub.com/vimeo/psalm/pull/10355)
- Finding methods and properties for auto completion feature by
[@&#8203;issidorov](https://togithub.com/issidorov) in
[https://github.com/vimeo/psalm/pull/10385](https://togithub.com/vimeo/psalm/pull/10385)
- update decimal stubs from documented URL by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10379](https://togithub.com/vimeo/psalm/pull/10379)
- Fix Phar build failure by [@&#8203;tscni](https://togithub.com/tscni)
in
[https://github.com/vimeo/psalm/pull/10391](https://togithub.com/vimeo/psalm/pull/10391)
- Fix redundant condition mixed type escape hatch & loose comparison int
type shouldnt be mixed by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10388](https://togithub.com/vimeo/psalm/pull/10388)
- Fix [#&#8203;10398](https://togithub.com/vimeo/psalm/issues/10398):
add missing methods of ReflectionProperty class in CallMap and CallMap
deltas. by [@&#8203;niconoe-](https://togithub.com/niconoe-) in
[https://github.com/vimeo/psalm/pull/10399](https://togithub.com/vimeo/psalm/pull/10399)

##### Docs

- docs: A semicolon expected by
[@&#8203;lens0021](https://togithub.com/lens0021) in
[https://github.com/vimeo/psalm/pull/10149](https://togithub.com/vimeo/psalm/pull/10149)
- Add documentation for
[@&#8203;psalm-flow](https://togithub.com/psalm-flow) by
[@&#8203;ohader](https://togithub.com/ohader) in
[https://github.com/vimeo/psalm/pull/10349](https://togithub.com/vimeo/psalm/pull/10349)

##### Internal changes

- Extract the list of impure functions into its own dictionary by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10136](https://togithub.com/vimeo/psalm/pull/10136)
- `composer.json` tweaks by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10161](https://togithub.com/vimeo/psalm/pull/10161)
- Bump actions/checkout from 3 to 4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/vimeo/psalm/pull/10192](https://togithub.com/vimeo/psalm/pull/10192)
- Update IssueBuffer.php by
[@&#8203;aleksandr-shevchenko](https://togithub.com/aleksandr-shevchenko)
in
[https://github.com/vimeo/psalm/pull/10294](https://togithub.com/vimeo/psalm/pull/10294)
- Backport rector fixes to 5.x by
[@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10306](https://togithub.com/vimeo/psalm/pull/10306)
- Bump fkirc/skip-duplicate-actions from 5.3.0 to 5.3.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/vimeo/psalm/pull/10313](https://togithub.com/vimeo/psalm/pull/10313)
- Allow Symfony 7 by [@&#8203;kbond](https://togithub.com/kbond) in
[https://github.com/vimeo/psalm/pull/10335](https://togithub.com/vimeo/psalm/pull/10335)
- Get rid of legacy 7.3 logic by
[@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10319](https://togithub.com/vimeo/psalm/pull/10319)
- Finalize all internal classes by
[@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10318](https://togithub.com/vimeo/psalm/pull/10318)
- fix CI "split" unevenly splits the number of tests by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10389](https://togithub.com/vimeo/psalm/pull/10389)
- Fix circleci builds by [@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10396](https://togithub.com/vimeo/psalm/pull/10396)

##### Other changes

- Add exec output param out by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10128](https://togithub.com/vimeo/psalm/pull/10128)

#### New Contributors

- [@&#8203;lens0021](https://togithub.com/lens0021) made their first
contribution in
[https://github.com/vimeo/psalm/pull/10149](https://togithub.com/vimeo/psalm/pull/10149)
- [@&#8203;kk-daniel](https://togithub.com/kk-daniel) made their first
contribution in
[https://github.com/vimeo/psalm/pull/10279](https://togithub.com/vimeo/psalm/pull/10279)
-
[@&#8203;aleksandr-shevchenko](https://togithub.com/aleksandr-shevchenko)
made their first contribution in
[https://github.com/vimeo/psalm/pull/10294](https://togithub.com/vimeo/psalm/pull/10294)
- [@&#8203;simonberger](https://togithub.com/simonberger) made their
first contribution in
[https://github.com/vimeo/psalm/pull/10314](https://togithub.com/vimeo/psalm/pull/10314)
- [@&#8203;kbond](https://togithub.com/kbond) made their first
contribution in
[https://github.com/vimeo/psalm/pull/10335](https://togithub.com/vimeo/psalm/pull/10335)
- [@&#8203;issidorov](https://togithub.com/issidorov) made their first
contribution in
[https://github.com/vimeo/psalm/pull/10320](https://togithub.com/vimeo/psalm/pull/10320)

**Full Changelog**:
vimeo/psalm@5.15.0...5.16.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/cerbos/cerbos-sdk-php).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40Ni4wIiwidXBkYXRlZEluVmVyIjoiMzcuNTkuOCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

---------

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Oğuzhan Durgun <oguzhandurgun95@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Oğuzhan Durgun <oguzhandurgun95@gmail.com>
tcarrio referenced this pull request in open-feature/php-sdk Dec 5, 2023
[![Mend Renovate logo
banner](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [vimeo/psalm](https://togithub.com/vimeo/psalm) | `~5.15.0` ->
`~5.16.0` |
[![age](https://developer.mend.io/api/mc/badges/age/packagist/vimeo%2fpsalm/5.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/packagist/vimeo%2fpsalm/5.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/packagist/vimeo%2fpsalm/5.15.0/5.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/packagist/vimeo%2fpsalm/5.15.0/5.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>vimeo/psalm (vimeo/psalm)</summary>

### [`v5.16.0`](https://togithub.com/vimeo/psalm/releases/tag/5.16.0)

[Compare
Source](https://togithub.com/vimeo/psalm/compare/5.15.0...5.16.0)

<!-- Release notes generated using configuration in .github/release.yml
at 5.x -->

#### What's Changed

##### Features

- Show success message and type stats with GHA formatter by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10145](https://togithub.com/vimeo/psalm/pull/10145)
- New sinks for TaintedCallable
[#&#8203;10117](https://togithub.com/vimeo/psalm/issues/10117) by
[@&#8203;cgocast](https://togithub.com/cgocast) in
[https://github.com/vimeo/psalm/pull/10154](https://togithub.com/vimeo/psalm/pull/10154)
- Properly inherit assertions from parents or implemented faces by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10157](https://togithub.com/vimeo/psalm/pull/10157)
- Flag invalid declares by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10176](https://togithub.com/vimeo/psalm/pull/10176)
- Narrow `ArrayObject` `TKey` template by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10190](https://togithub.com/vimeo/psalm/pull/10190)
- Allow object assertions for `mixed` values by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10207](https://togithub.com/vimeo/psalm/pull/10207)
- Issue handlers priority by
[@&#8203;gmessier](https://togithub.com/gmessier) in
[https://github.com/vimeo/psalm/pull/10202](https://togithub.com/vimeo/psalm/pull/10202)
- Check for declare strict_types in block mode by
[@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10234](https://togithub.com/vimeo/psalm/pull/10234)
- feat(LSP): Improve the autocomplete for nested array shape by
[@&#8203;ging-dev](https://togithub.com/ging-dev) in
[https://github.com/vimeo/psalm/pull/10230](https://togithub.com/vimeo/psalm/pull/10230)
- Add alias support to psalm-check-type by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10264](https://togithub.com/vimeo/psalm/pull/10264)
- Allow parameter names in callable docblocks with templates by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10261](https://togithub.com/vimeo/psalm/pull/10261)
- Disallow `never` type for parameters by
[@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10266](https://togithub.com/vimeo/psalm/pull/10266)
- Fix auto completion by partial property or method by
[@&#8203;issidorov](https://togithub.com/issidorov) in
[https://github.com/vimeo/psalm/pull/10320](https://togithub.com/vimeo/psalm/pull/10320)
- Add stubs for rdKafka by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10351](https://togithub.com/vimeo/psalm/pull/10351)
- Suppressing NoValue should not treat subsequent code as unevaluated by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10303](https://togithub.com/vimeo/psalm/pull/10303)
- Fix misc callable bugs by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10370](https://togithub.com/vimeo/psalm/pull/10370)

##### Fixes

- Added more gc_status return fields by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10138](https://togithub.com/vimeo/psalm/pull/10138)
- Filter baseline when checking individual files by
[@&#8203;edsrzf](https://togithub.com/edsrzf) in
[https://github.com/vimeo/psalm/pull/10115](https://togithub.com/vimeo/psalm/pull/10115)
- Assertion enhancements regarding `value-of` in combination with backed
enums by [@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10150](https://togithub.com/vimeo/psalm/pull/10150)
- `strrchr()`: `$before_needle` parameter by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10151](https://togithub.com/vimeo/psalm/pull/10151)
- Update `mysqli` stub by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10155](https://togithub.com/vimeo/psalm/pull/10155)
- Fix crash on property access to undefined property on a class with a
missing dependncy by [@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10159](https://togithub.com/vimeo/psalm/pull/10159)
- Prevent infinite-loop when resolving type-aliases by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10156](https://togithub.com/vimeo/psalm/pull/10156)
- InheritorViolation was only being triggered on grand-childen classes
by [@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10169](https://togithub.com/vimeo/psalm/pull/10169)
- Restore support for namespaced functions in referencedFunction config
by [@&#8203;tscni](https://togithub.com/tscni) in
[https://github.com/vimeo/psalm/pull/10186](https://togithub.com/vimeo/psalm/pull/10186)
- `DateTimeZone::getName()` always returns `non-empty-string` by
[@&#8203;gsteel](https://togithub.com/gsteel) in
[https://github.com/vimeo/psalm/pull/10187](https://togithub.com/vimeo/psalm/pull/10187)
- Only the binary op 'plus' works with two arrays by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10209](https://togithub.com/vimeo/psalm/pull/10209)
- Add openssl_\*\_export_to_file to impure functions by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10210](https://togithub.com/vimeo/psalm/pull/10210)
- add FILTER_SANITIZE_URL filter to filter_var by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10214](https://togithub.com/vimeo/psalm/pull/10214)
- Allow class-string<T> where T is a union by
[@&#8203;MidnightDesign](https://togithub.com/MidnightDesign) in
[https://github.com/vimeo/psalm/pull/10194](https://togithub.com/vimeo/psalm/pull/10194)
- Loop over PDOStatement::fetch() arguments by
[@&#8203;cgocast](https://togithub.com/cgocast) in
[https://github.com/vimeo/psalm/pull/10237](https://togithub.com/vimeo/psalm/pull/10237)
- Inherited assertions v2 by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10189](https://togithub.com/vimeo/psalm/pull/10189)
- Resolve inherited conditional return types by
[@&#8203;boesing](https://togithub.com/boesing) in
[https://github.com/vimeo/psalm/pull/10191](https://togithub.com/vimeo/psalm/pull/10191)
- Allow stringable objects in `sprintf()` values by
[@&#8203;MidnightDesign](https://togithub.com/MidnightDesign) in
[https://github.com/vimeo/psalm/pull/10231](https://togithub.com/vimeo/psalm/pull/10231)
- fix: [#&#8203;10239](https://togithub.com/vimeo/psalm/issues/10239) by
[@&#8203;ging-dev](https://togithub.com/ging-dev) in
[https://github.com/vimeo/psalm/pull/10240](https://togithub.com/vimeo/psalm/pull/10240)
- Remove duplicate namespace in InternalMethod error message by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10241](https://togithub.com/vimeo/psalm/pull/10241)
- Add stream_socket_shutdown socket_shutdown to impure function list by
[@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10244](https://togithub.com/vimeo/psalm/pull/10244)
- Emit `MethodSignatureMismatch` when descendant does not return by
reference by [@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10248](https://togithub.com/vimeo/psalm/pull/10248)
- Negated class_exist check on class-string converts to string instead
of mixed by [@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10262](https://togithub.com/vimeo/psalm/pull/10262)
- Fix error message for implicitly returning functions with `never`
return type by [@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10254](https://togithub.com/vimeo/psalm/pull/10254)
- Type check nested templates by
[@&#8203;klimick](https://togithub.com/klimick) in
[https://github.com/vimeo/psalm/pull/10271](https://togithub.com/vimeo/psalm/pull/10271)
- Fix return of BadSqlTainter::afterExpressionAnalysis() by
[@&#8203;cgocast](https://togithub.com/cgocast) in
[https://github.com/vimeo/psalm/pull/10270](https://togithub.com/vimeo/psalm/pull/10270)
- Allow tainted numerics except for 'html' and 'has_quotes' by
[@&#8203;cgocast](https://togithub.com/cgocast) in
[https://github.com/vimeo/psalm/pull/10242](https://togithub.com/vimeo/psalm/pull/10242)
- fix final class constant type by
[@&#8203;kk-daniel](https://togithub.com/kk-daniel) in
[https://github.com/vimeo/psalm/pull/10279](https://togithub.com/vimeo/psalm/pull/10279)
- Fix inferring enum case value from a class constant by
[@&#8203;tuqqu](https://togithub.com/tuqqu) in
[https://github.com/vimeo/psalm/pull/10274](https://togithub.com/vimeo/psalm/pull/10274)
- fix: [#&#8203;10080](https://togithub.com/vimeo/psalm/issues/10080) by
[@&#8203;ging-dev](https://togithub.com/ging-dev) in
[https://github.com/vimeo/psalm/pull/10228](https://togithub.com/vimeo/psalm/pull/10228)
- Fix memory explosion with calls to method_exists by
[@&#8203;robchett](https://togithub.com/robchett) in
[https://github.com/vimeo/psalm/pull/10290](https://togithub.com/vimeo/psalm/pull/10290)
- Additional caching fixes by
[@&#8203;ging-dev](https://togithub.com/ging-dev) in
[https://github.com/vimeo/psalm/pull/10289](https://togithub.com/vimeo/psalm/pull/10289)
- str_replace / substr_replace signature improvements by
[@&#8203;mathroc](https://togithub.com/mathroc) in
[https://github.com/vimeo/psalm/pull/10277](https://togithub.com/vimeo/psalm/pull/10277)
- Fix method calls and property accesses after extension_loaded by
[@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10295](https://togithub.com/vimeo/psalm/pull/10295)
- fix [@&#8203;param-out](https://togithub.com/param-out) with named
arguments by [@&#8203;kk-daniel](https://togithub.com/kk-daniel) in
[https://github.com/vimeo/psalm/pull/10312](https://togithub.com/vimeo/psalm/pull/10312)
- Narrow down `get_browser` returning array or object by
[@&#8203;simonberger](https://togithub.com/simonberger) in
[https://github.com/vimeo/psalm/pull/10314](https://togithub.com/vimeo/psalm/pull/10314)
- Allow int keys when calling Redis methods by
[@&#8203;greg0ire](https://togithub.com/greg0ire) in
[https://github.com/vimeo/psalm/pull/10355](https://togithub.com/vimeo/psalm/pull/10355)
- Finding methods and properties for auto completion feature by
[@&#8203;issidorov](https://togithub.com/issidorov) in
[https://github.com/vimeo/psalm/pull/10385](https://togithub.com/vimeo/psalm/pull/10385)
- update decimal stubs from documented URL by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10379](https://togithub.com/vimeo/psalm/pull/10379)
- Fix Phar build failure by [@&#8203;tscni](https://togithub.com/tscni)
in
[https://github.com/vimeo/psalm/pull/10391](https://togithub.com/vimeo/psalm/pull/10391)
- Fix redundant condition mixed type escape hatch & loose comparison int
type shouldnt be mixed by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10388](https://togithub.com/vimeo/psalm/pull/10388)
- Fix [#&#8203;10398](https://togithub.com/vimeo/psalm/issues/10398):
add missing methods of ReflectionProperty class in CallMap and CallMap
deltas. by [@&#8203;niconoe-](https://togithub.com/niconoe-) in
[https://github.com/vimeo/psalm/pull/10399](https://togithub.com/vimeo/psalm/pull/10399)

##### Docs

- docs: A semicolon expected by
[@&#8203;lens0021](https://togithub.com/lens0021) in
[https://github.com/vimeo/psalm/pull/10149](https://togithub.com/vimeo/psalm/pull/10149)
- Add documentation for
[@&#8203;psalm-flow](https://togithub.com/psalm-flow) by
[@&#8203;ohader](https://togithub.com/ohader) in
[https://github.com/vimeo/psalm/pull/10349](https://togithub.com/vimeo/psalm/pull/10349)

##### Internal changes

- Extract the list of impure functions into its own dictionary by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10136](https://togithub.com/vimeo/psalm/pull/10136)
- `composer.json` tweaks by
[@&#8203;weirdan](https://togithub.com/weirdan) in
[https://github.com/vimeo/psalm/pull/10161](https://togithub.com/vimeo/psalm/pull/10161)
- Bump actions/checkout from 3 to 4 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/vimeo/psalm/pull/10192](https://togithub.com/vimeo/psalm/pull/10192)
- Update IssueBuffer.php by
[@&#8203;aleksandr-shevchenko](https://togithub.com/aleksandr-shevchenko)
in
[https://github.com/vimeo/psalm/pull/10294](https://togithub.com/vimeo/psalm/pull/10294)
- Backport rector fixes to 5.x by
[@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10306](https://togithub.com/vimeo/psalm/pull/10306)
- Bump fkirc/skip-duplicate-actions from 5.3.0 to 5.3.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/vimeo/psalm/pull/10313](https://togithub.com/vimeo/psalm/pull/10313)
- Allow Symfony 7 by [@&#8203;kbond](https://togithub.com/kbond) in
[https://github.com/vimeo/psalm/pull/10335](https://togithub.com/vimeo/psalm/pull/10335)
- Get rid of legacy 7.3 logic by
[@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10319](https://togithub.com/vimeo/psalm/pull/10319)
- Finalize all internal classes by
[@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10318](https://togithub.com/vimeo/psalm/pull/10318)
- fix CI "split" unevenly splits the number of tests by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10389](https://togithub.com/vimeo/psalm/pull/10389)
- Fix circleci builds by [@&#8203;danog](https://togithub.com/danog) in
[https://github.com/vimeo/psalm/pull/10396](https://togithub.com/vimeo/psalm/pull/10396)

##### Other changes

- Add exec output param out by
[@&#8203;kkmuffme](https://togithub.com/kkmuffme) in
[https://github.com/vimeo/psalm/pull/10128](https://togithub.com/vimeo/psalm/pull/10128)

#### New Contributors

- [@&#8203;lens0021](https://togithub.com/lens0021) made their first
contribution in
[https://github.com/vimeo/psalm/pull/10149](https://togithub.com/vimeo/psalm/pull/10149)
- [@&#8203;kk-daniel](https://togithub.com/kk-daniel) made their first
contribution in
[https://github.com/vimeo/psalm/pull/10279](https://togithub.com/vimeo/psalm/pull/10279)
-
[@&#8203;aleksandr-shevchenko](https://togithub.com/aleksandr-shevchenko)
made their first contribution in
[https://github.com/vimeo/psalm/pull/10294](https://togithub.com/vimeo/psalm/pull/10294)
- [@&#8203;simonberger](https://togithub.com/simonberger) made their
first contribution in
[https://github.com/vimeo/psalm/pull/10314](https://togithub.com/vimeo/psalm/pull/10314)
- [@&#8203;kbond](https://togithub.com/kbond) made their first
contribution in
[https://github.com/vimeo/psalm/pull/10335](https://togithub.com/vimeo/psalm/pull/10335)
- [@&#8203;issidorov](https://togithub.com/issidorov) made their first
contribution in
[https://github.com/vimeo/psalm/pull/10320](https://togithub.com/vimeo/psalm/pull/10320)

**Full Changelog**:
vimeo/psalm@5.15.0...5.16.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/open-feature/php-sdk).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy41OS44IiwidXBkYXRlZEluVmVyIjoiMzcuNTkuOCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Tom Carrio <tom@carrio.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release:fix The PR will be included in 'Fixes' section of the release notes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants