You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -58,6 +58,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
58
58
-**Eloquent models always expose their primary key.** A model whose table has no migration and no schema dump no longer reports a false `Property 'id' not found` on `$model->id`. The primary key is synthesized for every Eloquent model, honouring `$primaryKey` for the column name and `$keyType` for the type (`int` by default, `string` for UUID or ULID keys).
59
59
-**Laravel virtual property hover and navigation prefer backing accessors.** Hover labels for accessor and computed Eloquent properties now describe the source without echoing the backing method name, and go-to-definition on accessor/computed properties prefers the backing accessor or legacy mutator before falling back to `$appends` or other Eloquent metadata arrays. Legacy `setXAttribute` mutators are shown alongside database, cast, attribute-default, accessor, or computed-property sources when they exist. Contributed by @calebdw.
60
60
-**Laravel macro callbacks registered through facades now infer `$this` as the concrete facade target.**`$this` inside callbacks such as `Request::macro('shouldReturnJson', function () { ... })` and `Context::macro(...)` now resolves to the class behind the facade instead of the surrounding service provider. Contributed by @calebdw.
61
+
-**`self::` and `static::` inside macro callbacks resolve to the macro target.** In a closure passed to a `macro()` registration (Laravel `Macroable` or Carbon), `self::` and `static::` now resolve to the class the macro is registered on instead of the service provider that lexically encloses the registration, matching how the closure is bound at runtime. Carbon's static macro idiom `self::this()->...` no longer reports a false unknown-method diagnostic, and completion after `self::` inside the callback offers the target's members.
61
62
-**Find References and Rename no longer match unrelated same-named methods when a call's receiver type can't be resolved.** A call like `$x->find()` used to conservatively match every `find()` method in the project when `$x`'s type couldn't be determined, drowning results in unrelated matches for common method names. Find References on an interface method now also includes every implementing class; Rename Symbol stays scoped to the single concrete implementation being renamed, so it never rewrites unrelated same-named methods elsewhere. Contributed by @sidux in https://github.com/PHPantom-dev/phpantom_lsp/pull/186.
62
63
-**Go-to-implementation and type hierarchy return the same results every time.** After the workspace finished indexing, these features listed only your project's implementing classes, but a class from a dependency could slip in if you happened to have viewed it earlier in the session, so the same query gave different results depending on what you'd looked at. Results are now consistently limited to your own code, matching what the workspace index actually covers.
63
64
-**Blade files with raw `<?php ... ?>` tags no longer report false syntax errors.** PHP code embedded directly in a Blade template (outside `@php`/`@endphp`) is now recognized and passed through unmodified, so string literals that happen to start with `@` (e.g. a JSON-LD `'@context'` array key) are no longer misread as Blade directives.
| B1 |[`resolve_function_name` guesses a single namespace, missing same-file multi-namespace declarations](todo/bugs.md#b1-resolve_function_name-guesses-a-single-namespace-missing-same-file-multi-namespace-declarations)| Low-Medium | Medium |
109
-
| B2 |[`self::`/`static::` inside macro closures resolve to the enclosing class, not the macro target](todo/bugs.md#b2-selfstatic-inside-macro-closures-resolve-to-the-enclosing-class-not-the-macro-target)| Medium | Medium |
110
109
||**[Code Actions](todo/actions.md)**|||
111
110
| A40 |[Generate method from call](todo/actions.md#a40-generate-method-from-call)| Medium-High | Medium |
112
111
| A41 |[Create class from non-existing name](todo/actions.md#a41-create-class-from-non-existing-name)| Medium | Medium |
0 commit comments