Page MenuHomePhabricator

Lift class map construction into a new class map query
ClosedPublic

Authored by epriestley on Jun 22 2015, 4:44 PM.
Tags
None
Referenced Files
F19812151: D13391.diff
Wed, Mar 4, 3:50 AM
F19802538: D13391.id.diff
Sun, Mar 1, 5:18 PM
F19019618: D13391.diff
Nov 23 2025, 3:27 PM
F18964914: D13391.diff
Nov 14 2025, 2:13 PM
F18852959: D13391.id.diff
Oct 31 2025, 1:19 PM
F18850701: D13391.diff
Oct 30 2025, 6:47 PM
F18763489: D13391.id32411.diff
Oct 7 2025, 12:26 AM
F18730590: D13391.id.diff
Sep 30 2025, 1:21 PM
Subscribers

Details

Summary

Ref T8637. The "load concrete subclasses" pattern has enjoyed wide success, but we're starting to collect a lot of instances of "loop over this list of things and make sure they all really have unique keys".

We can better support this, caching, subclass expansion, and sorting in a thin layer on top of PhutilSymbolLoader.

Test Plan

See next diff.

Diff Detail

Repository
rPHU libphutil
Branch
classmap
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 6939
Build 6961: [Placeholder Plan] Wait for 30 Seconds

Event Timeline

epriestley retitled this revision from to Lift class map construction into a new class map query.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added reviewers: btrahan, joshuaspence.
btrahan edited edge metadata.
This revision is now accepted and ready to land.Jun 22 2015, 9:11 PM
joshuaspence edited edge metadata.

This should maybe have some unit tests?

src/symbols/PhutilClassMapQuery.php
4

There's no technical reason that the parent class needs to be abstract, although that is the normal use case.

95–97

Add ```lang=php?

102–108

As above

I think we should definitely get code blocks inside source code documentation defaulting to their source file language per T5323 as a solution for the lang=php thing.

This revision was automatically updated to reflect the committed changes.

I also don't see an easy way to unit test this without building two (three? four?) separate class trees for each major case. I figure failures should be pretty obvious from usage and other getAll() tests.