-
Notifications
You must be signed in to change notification settings - Fork 316
[XDebug Bridge] Fetch all array keys when inspecting an array #2409
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
Open
adamziel
wants to merge
17
commits into
trunk
Choose a base branch
from
xdebug-paginate-props
base: trunk
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+126
−15
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
I think I found a way to avoid having that duplicate array inside itself. When paginating, the last element is the ement itself with :
So instead of injecting the object itself again in the array, let's check if the current page is actually '0' and add it. Do nothing otherwise.
// Use same depth/context as parent
this.objectHandles.set(childObjectId, {
type: 'property',
depth: depth,
contextId: contextId,
fullname: prop.$.fullname || name,
});
+ if (prop.$.page == 0) {
currentProps.push({
name: prop.$.key || name,
value: {
type: 'object',
className: className,
description: className,
objectId: childObjectId,
},
writable: false,
configurable: false,
enumerable: true,
});
+ }
} else { |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
[Package][@php-wasm] CLI
[Package][@wp-playground] CLI
[Type] Enhancement
New feature or request
XDebug
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation for the change, related issues
Fixes two problems:
property_get
XDebug command is paginated and before this PR, we'd only see a subset of all the array keys. With this PR, we see all the keys. This will be a problem on huge arrays so we'll need to bucket keys into group of 1000 in a follow-up PR.As for the latter, I'm not too happy about the solution – we're reaching for the nested XDebug
.property.property
when it's available. I expect that will lead us astray in some scenarios, e.g. when browsing arrays that have nested arrays. That being said, I couldn't easily break it so let's get it in and continue iterating:Testing instructions
Run
nx run php-wasm-cli:dev --xdebug --devtools xdebug.php
before and after this PR. Confirm you see the following results:Before
After ($_SERVER is still duplicated – let's fix that separately)