Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14316413
D13280.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
53 KB
Referenced Files
None
Subscribers
None
D13280.diff
View Options
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -485,10 +485,15 @@
'xsprintf_uri' => 'xsprintf/urisprintf.php',
),
'xmap' => array(
+ 'AASTNode' => 'Phobject',
'AASTNodeList' => array(
+ 'Phobject',
'Countable',
'Iterator',
),
+ 'AASTToken' => 'Phobject',
+ 'AASTTree' => 'Phobject',
+ 'AbstractDirectedGraph' => 'Phobject',
'AbstractDirectedGraphTestCase' => 'PhutilTestCase',
'AphrontAccessDeniedQueryException' => 'AphrontRecoverableQueryException',
'AphrontBaseMySQLDatabaseConnection' => 'AphrontDatabaseConnection',
@@ -496,7 +501,11 @@
'AphrontConnectionLostQueryException' => 'AphrontRecoverableQueryException',
'AphrontConnectionQueryException' => 'AphrontQueryException',
'AphrontCountQueryException' => 'AphrontQueryException',
- 'AphrontDatabaseConnection' => 'PhutilQsprintfInterface',
+ 'AphrontDatabaseConnection' => array(
+ 'Phobject',
+ 'PhutilQsprintfInterface',
+ ),
+ 'AphrontDatabaseTransactionState' => 'Phobject',
'AphrontDeadlockQueryException' => 'AphrontRecoverableQueryException',
'AphrontDuplicateKeyQueryException' => 'AphrontQueryException',
'AphrontIsolatedDatabaseConnection' => 'AphrontDatabaseConnection',
@@ -508,18 +517,28 @@
'AphrontQueryException' => 'Exception',
'AphrontRecoverableQueryException' => 'AphrontQueryException',
'AphrontSchemaQueryException' => 'AphrontQueryException',
+ 'AphrontScopedUnguardedWriteCapability' => 'Phobject',
+ 'AphrontWriteGuard' => 'Phobject',
'BaseHTTPFuture' => 'Future',
'CommandException' => 'Exception',
+ 'ConduitClient' => 'Phobject',
'ConduitClientException' => 'Exception',
'ConduitClientTestCase' => 'PhutilTestCase',
'ConduitFuture' => 'FutureProxy',
'ExecFuture' => 'Future',
'ExecFutureTestCase' => 'PhutilTestCase',
'ExecPassthruTestCase' => 'PhutilTestCase',
+ 'FileFinder' => 'Phobject',
'FileFinderTestCase' => 'PhutilTestCase',
+ 'FileList' => 'Phobject',
+ 'Filesystem' => 'Phobject',
'FilesystemException' => 'Exception',
'FilesystemTestCase' => 'PhutilTestCase',
- 'FutureIterator' => 'Iterator',
+ 'Future' => 'Phobject',
+ 'FutureIterator' => array(
+ 'Phobject',
+ 'Iterator',
+ ),
'FutureIteratorTestCase' => 'PhutilTestCase',
'FutureProxy' => 'Future',
'HTTPFuture' => 'BaseHTTPFuture',
@@ -531,13 +550,19 @@
'HTTPFutureTransportResponseStatus' => 'HTTPFutureResponseStatus',
'HTTPSFuture' => 'BaseHTTPFuture',
'ImmediateFuture' => 'Future',
- 'LinesOfALarge' => 'Iterator',
+ 'LinesOfALarge' => array(
+ 'Phobject',
+ 'Iterator',
+ ),
'LinesOfALargeExecFuture' => 'LinesOfALarge',
'LinesOfALargeExecFutureTestCase' => 'PhutilTestCase',
'LinesOfALargeFile' => 'LinesOfALarge',
'LinesOfALargeFileTestCase' => 'PhutilTestCase',
+ 'MFilterTestHelper' => 'Phobject',
'PHPASTParserTestCase' => 'PhutilTestCase',
+ 'PhageAgentBootloader' => 'Phobject',
'PhageAgentTestCase' => 'PhutilTestCase',
+ 'PhagePHPAgent' => 'Phobject',
'PhagePHPAgentBootloader' => 'PhageAgentBootloader',
'Phobject' => 'Iterator',
'PhutilAPCKeyValueCache' => 'PhutilKeyValueCache',
@@ -548,11 +573,14 @@
'PhutilAggregateException' => 'Exception',
'PhutilAllCapsEnglishLocale' => 'PhutilLocale',
'PhutilAmazonAuthAdapter' => 'PhutilOAuthAuthAdapter',
+ 'PhutilArgumentParser' => 'Phobject',
'PhutilArgumentParserException' => 'Exception',
'PhutilArgumentParserTestCase' => 'PhutilTestCase',
+ 'PhutilArgumentSpecification' => 'Phobject',
'PhutilArgumentSpecificationException' => 'PhutilArgumentParserException',
'PhutilArgumentSpecificationTestCase' => 'PhutilTestCase',
'PhutilArgumentUsageException' => 'PhutilArgumentParserException',
+ 'PhutilArgumentWorkflow' => 'Phobject',
'PhutilArray' => array(
'Phobject',
'Countable',
@@ -563,58 +591,93 @@
'PhutilArrayWithDefaultValue' => 'PhutilArray',
'PhutilAsanaAuthAdapter' => 'PhutilOAuthAuthAdapter',
'PhutilAsanaFuture' => 'FutureProxy',
+ 'PhutilAuthAdapter' => 'Phobject',
'PhutilAuthConfigurationException' => 'PhutilAuthException',
'PhutilAuthCredentialException' => 'PhutilAuthException',
'PhutilAuthException' => 'Exception',
'PhutilAuthUserAbortedException' => 'PhutilAuthException',
+ 'PhutilBallOfPHP' => 'Phobject',
'PhutilBitbucketAuthAdapter' => 'PhutilOAuth1AuthAdapter',
'PhutilBootloaderException' => 'Exception',
'PhutilBritishEnglishLocale' => 'PhutilLocale',
- 'PhutilBufferedIterator' => 'Iterator',
+ 'PhutilBufferedIterator' => array(
+ 'Phobject',
+ 'Iterator',
+ ),
'PhutilBufferedIteratorTestCase' => 'PhutilTestCase',
+ 'PhutilBugtraqParser' => 'Phobject',
'PhutilBugtraqParserTestCase' => 'PhutilTestCase',
'PhutilCIDRBlock' => 'Phobject',
'PhutilCIDRList' => 'Phobject',
'PhutilCLikeCodeSnippetContextFreeGrammar' => 'PhutilCodeSnippetContextFreeGrammar',
'PhutilCallbackFilterIterator' => 'FilterIterator',
+ 'PhutilChannel' => 'Phobject',
'PhutilChannelChannel' => 'PhutilChannel',
'PhutilChannelTestCase' => 'PhutilTestCase',
- 'PhutilChunkedIterator' => 'Iterator',
+ 'PhutilChunkedIterator' => array(
+ 'Phobject',
+ 'Iterator',
+ ),
'PhutilChunkedIteratorTestCase' => 'PhutilTestCase',
'PhutilCodeSnippetContextFreeGrammar' => 'PhutilContextFreeGrammar',
'PhutilCommandString' => 'Phobject',
+ 'PhutilConsole' => 'Phobject',
+ 'PhutilConsoleFormatter' => 'Phobject',
+ 'PhutilConsoleMessage' => 'Phobject',
'PhutilConsoleProgressBar' => 'Phobject',
+ 'PhutilConsoleServer' => 'Phobject',
'PhutilConsoleServerChannel' => 'PhutilChannelChannel',
'PhutilConsoleStdinNotInteractiveException' => 'Exception',
+ 'PhutilConsoleSyntaxHighlighter' => 'Phobject',
'PhutilConsoleTable' => 'Phobject',
'PhutilConsoleWrapTestCase' => 'PhutilTestCase',
+ 'PhutilContextFreeGrammar' => 'Phobject',
'PhutilCsprintfTestCase' => 'PhutilTestCase',
'PhutilCzechLocale' => 'PhutilLocale',
+ 'PhutilDaemon' => 'Phobject',
+ 'PhutilDaemonHandle' => 'Phobject',
+ 'PhutilDaemonOverseer' => 'Phobject',
+ 'PhutilDefaultSyntaxHighlighter' => 'Phobject',
'PhutilDefaultSyntaxHighlighterEngine' => 'PhutilSyntaxHighlighterEngine',
'PhutilDefaultSyntaxHighlighterEnginePygmentsFuture' => 'FutureProxy',
'PhutilDefaultSyntaxHighlighterEngineTestCase' => 'PhutilTestCase',
+ 'PhutilDeferredLog' => 'Phobject',
'PhutilDeferredLogTestCase' => 'PhutilTestCase',
'PhutilDirectedScalarGraph' => 'AbstractDirectedGraph',
+ 'PhutilDirectoryFixture' => 'Phobject',
'PhutilDirectoryKeyValueCache' => 'PhutilKeyValueCache',
'PhutilDisqusAuthAdapter' => 'PhutilOAuthAuthAdapter',
+ 'PhutilDivinerSyntaxHighlighter' => 'Phobject',
+ 'PhutilDocblockParser' => 'Phobject',
'PhutilDocblockParserTestCase' => 'PhutilTestCase',
+ 'PhutilEditDistanceMatrix' => 'Phobject',
'PhutilEditDistanceMatrixTestCase' => 'PhutilTestCase',
+ 'PhutilEditorConfig' => 'Phobject',
'PhutilEditorConfigTestCase' => 'PhutilTestCase',
+ 'PhutilEmailAddress' => 'Phobject',
'PhutilEmailAddressTestCase' => 'PhutilTestCase',
'PhutilEmptyAuthAdapter' => 'PhutilAuthAdapter',
+ 'PhutilErrorHandler' => 'Phobject',
'PhutilErrorHandlerTestCase' => 'PhutilTestCase',
'PhutilErrorTrap' => 'Phobject',
+ 'PhutilEvent' => 'Phobject',
+ 'PhutilEventConstants' => 'Phobject',
+ 'PhutilEventEngine' => 'Phobject',
+ 'PhutilEventListener' => 'Phobject',
'PhutilEventType' => 'PhutilEventConstants',
'PhutilExampleBufferedIterator' => 'PhutilBufferedIterator',
'PhutilExcessiveServiceCallsDaemon' => 'PhutilTortureTestDaemon',
'PhutilExecChannel' => 'PhutilChannel',
'PhutilExecPassthru' => 'Phobject',
+ 'PhutilExecutionEnvironment' => 'Phobject',
'PhutilExtensionsTestCase' => 'PhutilTestCase',
'PhutilFacebookAuthAdapter' => 'PhutilOAuthAuthAdapter',
'PhutilFatalDaemon' => 'PhutilTortureTestDaemon',
'PhutilFileLock' => 'PhutilLock',
'PhutilFileLockTestCase' => 'PhutilTestCase',
+ 'PhutilFileTree' => 'Phobject',
'PhutilGitHubAuthAdapter' => 'PhutilOAuthAuthAdapter',
+ 'PhutilGitURI' => 'Phobject',
'PhutilGitURITestCase' => 'PhutilTestCase',
'PhutilGoogleAuthAdapter' => 'PhutilOAuthAuthAdapter',
'PhutilHangForeverDaemon' => 'PhutilTortureTestDaemon',
@@ -625,32 +688,43 @@
'PhutilIPAddress' => 'Phobject',
'PhutilIPAddressTestCase' => 'PhutilTestCase',
'PhutilInRequestKeyValueCache' => 'PhutilKeyValueCache',
+ 'PhutilInteractiveEditor' => 'Phobject',
'PhutilInvalidRuleParserGeneratorException' => 'PhutilParserGeneratorException',
'PhutilInvalidStateException' => 'Exception',
'PhutilInvalidStateExceptionTestCase' => 'PhutilTestCase',
+ 'PhutilInvisibleSyntaxHighlighter' => 'Phobject',
'PhutilIrreducibleRuleParserGeneratorException' => 'PhutilParserGeneratorException',
'PhutilJIRAAuthAdapter' => 'PhutilOAuth1AuthAdapter',
+ 'PhutilJSON' => 'Phobject',
+ 'PhutilJSONParser' => 'Phobject',
'PhutilJSONParserException' => 'Exception',
'PhutilJSONParserTestCase' => 'PhutilTestCase',
'PhutilJSONProtocolChannel' => 'PhutilProtocolChannel',
'PhutilJSONProtocolChannelTestCase' => 'PhutilTestCase',
'PhutilJSONTestCase' => 'PhutilTestCase',
'PhutilJavaCodeSnippetContextFreeGrammar' => 'PhutilCLikeCodeSnippetContextFreeGrammar',
+ 'PhutilKeyValueCache' => 'Phobject',
'PhutilKeyValueCacheNamespace' => 'PhutilKeyValueCacheProxy',
'PhutilKeyValueCacheProfiler' => 'PhutilKeyValueCacheProxy',
'PhutilKeyValueCacheProxy' => 'PhutilKeyValueCache',
'PhutilKeyValueCacheStack' => 'PhutilKeyValueCache',
'PhutilKeyValueCacheTestCase' => 'PhutilTestCase',
'PhutilLDAPAuthAdapter' => 'PhutilAuthAdapter',
+ 'PhutilLanguageGuesser' => 'Phobject',
'PhutilLanguageGuesserTestCase' => 'PhutilTestCase',
+ 'PhutilLexer' => 'Phobject',
'PhutilLexerSyntaxHighlighter' => 'PhutilSyntaxHighlighter',
'PhutilLibraryConflictException' => 'Exception',
+ 'PhutilLibraryMapBuilder' => 'Phobject',
'PhutilLibraryTestCase' => 'PhutilTestCase',
'PhutilLipsumContextFreeGrammar' => 'PhutilContextFreeGrammar',
'PhutilLocale' => 'Phobject',
+ 'PhutilLock' => 'Phobject',
'PhutilLockException' => 'Exception',
'PhutilLogFileChannel' => 'PhutilChannelChannel',
+ 'PhutilLunarPhase' => 'Phobject',
'PhutilLunarPhaseTestCase' => 'PhutilTestCase',
+ 'PhutilMarkupEngine' => 'Phobject',
'PhutilMarkupTestCase' => 'PhutilTestCase',
'PhutilMemcacheKeyValueCache' => 'PhutilKeyValueCache',
'PhutilMethodNotImplementedException' => 'Exception',
@@ -658,11 +732,14 @@
'PhutilMissingSymbolException' => 'Exception',
'PhutilModuleUtilsTestCase' => 'PhutilTestCase',
'PhutilNiceDaemon' => 'PhutilTortureTestDaemon',
+ 'PhutilNumber' => 'Phobject',
'PhutilOAuth1AuthAdapter' => 'PhutilAuthAdapter',
'PhutilOAuth1Future' => 'FutureProxy',
'PhutilOAuth1FutureTestCase' => 'PhutilTestCase',
'PhutilOAuthAuthAdapter' => 'PhutilAuthAdapter',
'PhutilOnDiskKeyValueCache' => 'PhutilKeyValueCache',
+ 'PhutilOpaqueEnvelope' => 'Phobject',
+ 'PhutilOpaqueEnvelopeKey' => 'Phobject',
'PhutilOpaqueEnvelopeTestCase' => 'PhutilTestCase',
'PhutilPHPCodeSnippetContextFreeGrammar' => 'PhutilCLikeCodeSnippetContextFreeGrammar',
'PhutilPHPFragmentLexer' => 'PhutilLexer',
@@ -670,10 +747,14 @@
'PhutilPHPFragmentLexerTestCase' => 'PhutilTestCase',
'PhutilPHPObjectProtocolChannel' => 'PhutilProtocolChannel',
'PhutilPHPObjectProtocolChannelTestCase' => 'PhutilTestCase',
+ 'PhutilParserGenerator' => 'Phobject',
'PhutilParserGeneratorException' => 'Exception',
'PhutilParserGeneratorTestCase' => 'PhutilTestCase',
'PhutilPayPalAPIFuture' => 'FutureProxy',
- 'PhutilPersonTest' => 'PhutilPerson',
+ 'PhutilPersonTest' => array(
+ 'Phobject',
+ 'PhutilPerson',
+ ),
'PhutilPersonaAuthAdapter' => 'PhutilAuthAdapter',
'PhutilPhabricatorAuthAdapter' => 'PhutilOAuthAuthAdapter',
'PhutilPhobjectTestCase' => 'PhutilTestCase',
@@ -681,11 +762,18 @@
'PhutilProcessGroupDaemon' => 'PhutilTortureTestDaemon',
'PhutilProtocolChannel' => 'PhutilChannelChannel',
'PhutilProxyException' => 'Exception',
+ 'PhutilPygmentsSyntaxHighlighter' => 'Phobject',
'PhutilPythonFragmentLexer' => 'PhutilLexer',
+ 'PhutilQueryStringParser' => 'Phobject',
'PhutilQueryStringParserTestCase' => 'PhutilTestCase',
+ 'PhutilRainbowSyntaxHighlighter' => 'Phobject',
'PhutilRawEnglishLocale' => 'PhutilLocale',
+ 'PhutilReadableSerializer' => 'Phobject',
'PhutilReadableSerializerTestCase' => 'PhutilTestCase',
'PhutilRealNameContextFreeGrammar' => 'PhutilContextFreeGrammar',
+ 'PhutilRemarkupBlockInterpreter' => 'Phobject',
+ 'PhutilRemarkupBlockRule' => 'Phobject',
+ 'PhutilRemarkupBlockStorage' => 'Phobject',
'PhutilRemarkupBoldRule' => 'PhutilRemarkupRule',
'PhutilRemarkupCodeBlockRule' => 'PhutilRemarkupBlockRule',
'PhutilRemarkupDefaultBlockRule' => 'PhutilRemarkupBlockRule',
@@ -707,20 +795,28 @@
'PhutilRemarkupNoteBlockRule' => 'PhutilRemarkupBlockRule',
'PhutilRemarkupQuotesBlockRule' => 'PhutilRemarkupBlockRule',
'PhutilRemarkupReplyBlockRule' => 'PhutilRemarkupBlockRule',
+ 'PhutilRemarkupRule' => 'Phobject',
'PhutilRemarkupSimpleTableBlockRule' => 'PhutilRemarkupBlockRule',
'PhutilRemarkupTableBlockRule' => 'PhutilRemarkupBlockRule',
'PhutilRemarkupTestInterpreterRule' => 'PhutilRemarkupBlockInterpreter',
'PhutilRemarkupUnderlineRule' => 'PhutilRemarkupRule',
'PhutilRope' => 'Phobject',
'PhutilRopeTestCase' => 'PhutilTestCase',
+ 'PhutilSafeHTML' => 'Phobject',
'PhutilSafeHTMLTestCase' => 'PhutilTestCase',
'PhutilSaturateStdoutDaemon' => 'PhutilTortureTestDaemon',
+ 'PhutilServiceProfiler' => 'Phobject',
'PhutilShellLexer' => 'PhutilLexer',
'PhutilShellLexerTestCase' => 'PhutilTestCase',
+ 'PhutilSimpleOptions' => 'Phobject',
'PhutilSimpleOptionsLexer' => 'PhutilLexer',
'PhutilSimpleOptionsLexerTestCase' => 'PhutilTestCase',
'PhutilSimpleOptionsTestCase' => 'PhutilTestCase',
'PhutilSocketChannel' => 'PhutilChannel',
+ 'PhutilSprite' => 'Phobject',
+ 'PhutilSpriteSheet' => 'Phobject',
+ 'PhutilSyntaxHighlighter' => 'Phobject',
+ 'PhutilSyntaxHighlighterEngine' => 'Phobject',
'PhutilSyntaxHighlighterException' => 'Exception',
'PhutilSystem' => 'Phobject',
'PhutilSystemTestCase' => 'PhutilTestCase',
@@ -728,6 +824,7 @@
'PhutilTestPhobject' => 'Phobject',
'PhutilTortureTestDaemon' => 'PhutilDaemon',
'PhutilTranslation' => 'Phobject',
+ 'PhutilTranslator' => 'Phobject',
'PhutilTranslatorTestCase' => 'PhutilTestCase',
'PhutilTsprintfTestCase' => 'PhutilTestCase',
'PhutilTwitchAuthAdapter' => 'PhutilOAuthAuthAdapter',
@@ -737,7 +834,9 @@
'PhutilTypeExtraParametersException' => 'Exception',
'PhutilTypeLexer' => 'PhutilLexer',
'PhutilTypeMissingParametersException' => 'Exception',
+ 'PhutilTypeSpec' => 'Phobject',
'PhutilTypeSpecTestCase' => 'PhutilTestCase',
+ 'PhutilURI' => 'Phobject',
'PhutilURITestCase' => 'PhutilTestCase',
'PhutilUSEnglishLocale' => 'PhutilLocale',
'PhutilUTF8StringTruncator' => 'Phobject',
@@ -750,9 +849,12 @@
'PhutilVeryWowEnglishLocale' => 'PhutilLocale',
'PhutilWordPressAuthAdapter' => 'PhutilOAuthAuthAdapter',
'PhutilWordPressFuture' => 'FutureProxy',
+ 'PhutilXHPASTBinary' => 'Phobject',
+ 'PhutilXHPASTSyntaxHighlighter' => 'Phobject',
'PhutilXHPASTSyntaxHighlighterFuture' => 'FutureProxy',
'PhutilXHPASTSyntaxHighlighterTestCase' => 'PhutilTestCase',
'QueryFuture' => 'Future',
+ 'TempFile' => 'Phobject',
'TestAbstractDirectedGraph' => 'AbstractDirectedGraph',
'XHPASTNode' => 'AASTNode',
'XHPASTNodeTestCase' => 'PhutilTestCase',
diff --git a/src/aphront/storage/connection/AphrontDatabaseConnection.php b/src/aphront/storage/connection/AphrontDatabaseConnection.php
--- a/src/aphront/storage/connection/AphrontDatabaseConnection.php
+++ b/src/aphront/storage/connection/AphrontDatabaseConnection.php
@@ -3,7 +3,9 @@
/**
* @task xaction Transaction Management
*/
-abstract class AphrontDatabaseConnection implements PhutilQsprintfInterface {
+abstract class AphrontDatabaseConnection
+ extends Phobject
+ implements PhutilQsprintfInterface {
private $transactionState;
diff --git a/src/aphront/storage/connection/AphrontDatabaseTransactionState.php b/src/aphront/storage/connection/AphrontDatabaseTransactionState.php
--- a/src/aphront/storage/connection/AphrontDatabaseTransactionState.php
+++ b/src/aphront/storage/connection/AphrontDatabaseTransactionState.php
@@ -3,7 +3,7 @@
/**
* Represents current transaction state of a connection.
*/
-final class AphrontDatabaseTransactionState {
+final class AphrontDatabaseTransactionState extends Phobject {
private $depth = 0;
private $readLockLevel = 0;
diff --git a/src/aphront/writeguard/AphrontScopedUnguardedWriteCapability.php b/src/aphront/writeguard/AphrontScopedUnguardedWriteCapability.php
--- a/src/aphront/writeguard/AphrontScopedUnguardedWriteCapability.php
+++ b/src/aphront/writeguard/AphrontScopedUnguardedWriteCapability.php
@@ -1,6 +1,6 @@
<?php
-final class AphrontScopedUnguardedWriteCapability {
+final class AphrontScopedUnguardedWriteCapability extends Phobject {
public function __destruct() {
AphrontWriteGuard::endUnguardedWrites();
diff --git a/src/aphront/writeguard/AphrontWriteGuard.php b/src/aphront/writeguard/AphrontWriteGuard.php
--- a/src/aphront/writeguard/AphrontWriteGuard.php
+++ b/src/aphront/writeguard/AphrontWriteGuard.php
@@ -28,7 +28,7 @@
* @task manage Managing Write Guards
* @task internal Internals
*/
-final class AphrontWriteGuard {
+final class AphrontWriteGuard extends Phobject {
private static $instance;
private static $allowUnguardedWrites = false;
diff --git a/src/auth/PhutilAuthAdapter.php b/src/auth/PhutilAuthAdapter.php
--- a/src/auth/PhutilAuthAdapter.php
+++ b/src/auth/PhutilAuthAdapter.php
@@ -15,7 +15,7 @@
* configured -- only what information it is expected to be able to provide once
* properly configured.
*/
-abstract class PhutilAuthAdapter {
+abstract class PhutilAuthAdapter extends Phobject {
/**
* Get a unique identifier associated with the identity. For most providers,
diff --git a/src/cache/PhutilKeyValueCache.php b/src/cache/PhutilKeyValueCache.php
--- a/src/cache/PhutilKeyValueCache.php
+++ b/src/cache/PhutilKeyValueCache.php
@@ -7,7 +7,7 @@
*
* @task kvimpl Key-Value Cache Implementation
*/
-abstract class PhutilKeyValueCache {
+abstract class PhutilKeyValueCache extends Phobject {
/* -( Key-Value Cache Implementation )------------------------------------- */
diff --git a/src/channel/PhutilChannel.php b/src/channel/PhutilChannel.php
--- a/src/channel/PhutilChannel.php
+++ b/src/channel/PhutilChannel.php
@@ -27,7 +27,7 @@
* @task update Responding to Activity
* @task impl Channel Implementation
*/
-abstract class PhutilChannel {
+abstract class PhutilChannel extends Phobject {
private $ibuf = '';
private $obuf;
diff --git a/src/conduit/ConduitClient.php b/src/conduit/ConduitClient.php
--- a/src/conduit/ConduitClient.php
+++ b/src/conduit/ConduitClient.php
@@ -1,6 +1,6 @@
<?php
-final class ConduitClient {
+final class ConduitClient extends Phobject {
private $uri;
private $host;
diff --git a/src/console/PhutilConsole.php b/src/console/PhutilConsole.php
--- a/src/console/PhutilConsole.php
+++ b/src/console/PhutilConsole.php
@@ -11,7 +11,7 @@
* @task interface Interfacing with the User
* @task internal Internals
*/
-final class PhutilConsole {
+final class PhutilConsole extends Phobject {
private static $console;
diff --git a/src/console/PhutilConsoleFormatter.php b/src/console/PhutilConsoleFormatter.php
--- a/src/console/PhutilConsoleFormatter.php
+++ b/src/console/PhutilConsoleFormatter.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilConsoleFormatter {
+final class PhutilConsoleFormatter extends Phobject {
private static $colorCodes = array(
'black' => 0,
diff --git a/src/console/PhutilConsoleMessage.php b/src/console/PhutilConsoleMessage.php
--- a/src/console/PhutilConsoleMessage.php
+++ b/src/console/PhutilConsoleMessage.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilConsoleMessage {
+final class PhutilConsoleMessage extends Phobject {
const TYPE_CONFIRM = 'phutil:confirm';
const TYPE_PROMPT = 'phutil:prompt';
diff --git a/src/console/PhutilConsoleServer.php b/src/console/PhutilConsoleServer.php
--- a/src/console/PhutilConsoleServer.php
+++ b/src/console/PhutilConsoleServer.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilConsoleServer {
+final class PhutilConsoleServer extends Phobject {
private $clients = array();
private $handler;
diff --git a/src/console/PhutilInteractiveEditor.php b/src/console/PhutilInteractiveEditor.php
--- a/src/console/PhutilInteractiveEditor.php
+++ b/src/console/PhutilInteractiveEditor.php
@@ -15,7 +15,7 @@
* @task edit Editing Interactively
* @task config Configuring Options
*/
-final class PhutilInteractiveEditor {
+final class PhutilInteractiveEditor extends Phobject {
private $name = '';
private $content = '';
diff --git a/src/daemon/PhutilDaemon.php b/src/daemon/PhutilDaemon.php
--- a/src/daemon/PhutilDaemon.php
+++ b/src/daemon/PhutilDaemon.php
@@ -40,7 +40,7 @@
* @task overseer Communicating With the Overseer
* @task autoscale Autoscaling Daemon Pools
*/
-abstract class PhutilDaemon {
+abstract class PhutilDaemon extends Phobject {
const MESSAGETYPE_STDOUT = 'stdout';
const MESSAGETYPE_HEARTBEAT = 'heartbeat';
diff --git a/src/daemon/PhutilDaemonHandle.php b/src/daemon/PhutilDaemonHandle.php
--- a/src/daemon/PhutilDaemonHandle.php
+++ b/src/daemon/PhutilDaemonHandle.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilDaemonHandle {
+final class PhutilDaemonHandle extends Phobject {
const EVENT_DID_LAUNCH = 'daemon.didLaunch';
const EVENT_DID_LOG = 'daemon.didLogMessage';
diff --git a/src/daemon/PhutilDaemonOverseer.php b/src/daemon/PhutilDaemonOverseer.php
--- a/src/daemon/PhutilDaemonOverseer.php
+++ b/src/daemon/PhutilDaemonOverseer.php
@@ -3,7 +3,7 @@
/**
* Oversees a daemon and restarts it if it fails.
*/
-final class PhutilDaemonOverseer {
+final class PhutilDaemonOverseer extends Phobject {
private $argv;
private $moreArgs;
diff --git a/src/error/PhutilErrorHandler.php b/src/error/PhutilErrorHandler.php
--- a/src/error/PhutilErrorHandler.php
+++ b/src/error/PhutilErrorHandler.php
@@ -29,7 +29,7 @@
* @task trap Error Traps
* @task internal Internals
*/
-final class PhutilErrorHandler {
+final class PhutilErrorHandler extends Phobject {
private static $errorListener = null;
private static $initialized = false;
diff --git a/src/error/PhutilOpaqueEnvelope.php b/src/error/PhutilOpaqueEnvelope.php
--- a/src/error/PhutilOpaqueEnvelope.php
+++ b/src/error/PhutilOpaqueEnvelope.php
@@ -20,7 +20,7 @@
* @task envelope Using Opaque Envelopes
* @task internal Internals
*/
-final class PhutilOpaqueEnvelope {
+final class PhutilOpaqueEnvelope extends Phobject {
private $value;
diff --git a/src/error/PhutilOpaqueEnvelopeKey.php b/src/error/PhutilOpaqueEnvelopeKey.php
--- a/src/error/PhutilOpaqueEnvelopeKey.php
+++ b/src/error/PhutilOpaqueEnvelopeKey.php
@@ -8,7 +8,7 @@
*
* @task internal Internals
*/
-final class PhutilOpaqueEnvelopeKey {
+final class PhutilOpaqueEnvelopeKey extends Phobject {
private static $key;
diff --git a/src/events/PhutilEvent.php b/src/events/PhutilEvent.php
--- a/src/events/PhutilEvent.php
+++ b/src/events/PhutilEvent.php
@@ -3,7 +3,7 @@
/**
* @concrete-extensible
*/
-class PhutilEvent {
+class PhutilEvent extends Phobject {
private $type;
private $data;
diff --git a/src/events/PhutilEventEngine.php b/src/events/PhutilEventEngine.php
--- a/src/events/PhutilEventEngine.php
+++ b/src/events/PhutilEventEngine.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilEventEngine {
+final class PhutilEventEngine extends Phobject {
private static $instance;
diff --git a/src/events/PhutilEventListener.php b/src/events/PhutilEventListener.php
--- a/src/events/PhutilEventListener.php
+++ b/src/events/PhutilEventListener.php
@@ -1,6 +1,6 @@
<?php
-abstract class PhutilEventListener {
+abstract class PhutilEventListener extends Phobject {
private $listenerID;
private static $nextListenerID = 1;
diff --git a/src/events/constant/PhutilEventConstants.php b/src/events/constant/PhutilEventConstants.php
--- a/src/events/constant/PhutilEventConstants.php
+++ b/src/events/constant/PhutilEventConstants.php
@@ -1,3 +1,3 @@
<?php
-abstract class PhutilEventConstants {}
+abstract class PhutilEventConstants extends Phobject {}
diff --git a/src/filesystem/FileFinder.php b/src/filesystem/FileFinder.php
--- a/src/filesystem/FileFinder.php
+++ b/src/filesystem/FileFinder.php
@@ -15,7 +15,7 @@
* @task exec Executing the File Query
* @task internal Internal
*/
-final class FileFinder {
+final class FileFinder extends Phobject {
private $root;
private $exclude = array();
diff --git a/src/filesystem/FileList.php b/src/filesystem/FileList.php
--- a/src/filesystem/FileList.php
+++ b/src/filesystem/FileList.php
@@ -18,7 +18,7 @@
* @task create Creating a File List
* @task test Testing File Lists
*/
-final class FileList {
+final class FileList extends Phobject {
private $files = array();
private $dirs = array();
diff --git a/src/filesystem/Filesystem.php b/src/filesystem/Filesystem.php
--- a/src/filesystem/Filesystem.php
+++ b/src/filesystem/Filesystem.php
@@ -15,7 +15,7 @@
* @task exec Executables
* @task assert Assertions
*/
-final class Filesystem {
+final class Filesystem extends Phobject {
/* -( Files )-------------------------------------------------------------- */
diff --git a/src/filesystem/PhutilDeferredLog.php b/src/filesystem/PhutilDeferredLog.php
--- a/src/filesystem/PhutilDeferredLog.php
+++ b/src/filesystem/PhutilDeferredLog.php
@@ -36,7 +36,7 @@
* @task write Writing the Log
* @task internal Internals
*/
-final class PhutilDeferredLog {
+final class PhutilDeferredLog extends Phobject {
private $file;
private $format;
diff --git a/src/filesystem/PhutilDirectoryFixture.php b/src/filesystem/PhutilDirectoryFixture.php
--- a/src/filesystem/PhutilDirectoryFixture.php
+++ b/src/filesystem/PhutilDirectoryFixture.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilDirectoryFixture {
+final class PhutilDirectoryFixture extends Phobject {
protected $path;
diff --git a/src/filesystem/PhutilFileTree.php b/src/filesystem/PhutilFileTree.php
--- a/src/filesystem/PhutilFileTree.php
+++ b/src/filesystem/PhutilFileTree.php
@@ -3,7 +3,7 @@
/**
* Data structure for representing filesystem directory trees.
*/
-final class PhutilFileTree {
+final class PhutilFileTree extends Phobject {
private $name;
private $fullPath;
diff --git a/src/filesystem/PhutilLock.php b/src/filesystem/PhutilLock.php
--- a/src/filesystem/PhutilLock.php
+++ b/src/filesystem/PhutilLock.php
@@ -25,7 +25,7 @@
* @task lock Locking
* @task internal Internals
*/
-abstract class PhutilLock {
+abstract class PhutilLock extends Phobject {
private static $registeredShutdownFunction = false;
private static $locks = array();
diff --git a/src/filesystem/TempFile.php b/src/filesystem/TempFile.php
--- a/src/filesystem/TempFile.php
+++ b/src/filesystem/TempFile.php
@@ -14,7 +14,7 @@
* @task config Configuration
* @task internal Internals
*/
-final class TempFile {
+final class TempFile extends Phobject {
private $dir;
private $file;
diff --git a/src/filesystem/linesofalarge/LinesOfALarge.php b/src/filesystem/linesofalarge/LinesOfALarge.php
--- a/src/filesystem/linesofalarge/LinesOfALarge.php
+++ b/src/filesystem/linesofalarge/LinesOfALarge.php
@@ -33,7 +33,7 @@
* @task internals Internals
* @task iterator Iterator Interface
*/
-abstract class LinesOfALarge implements Iterator {
+abstract class LinesOfALarge extends Phobject implements Iterator {
private $pos;
private $buf;
diff --git a/src/future/Future.php b/src/future/Future.php
--- a/src/future/Future.php
+++ b/src/future/Future.php
@@ -5,7 +5,7 @@
* pending computation. For a more complete overview of futures, see
* @{article:Using Futures}.
*/
-abstract class Future {
+abstract class Future extends Phobject {
protected static $handlerInstalled = null;
diff --git a/src/future/FutureIterator.php b/src/future/FutureIterator.php
--- a/src/future/FutureIterator.php
+++ b/src/future/FutureIterator.php
@@ -28,7 +28,7 @@
* @task iterator Iterator Interface
* @task internal Internals
*/
-final class FutureIterator implements Iterator {
+final class FutureIterator extends Phobject implements Iterator {
protected $wait = array();
protected $work = array();
diff --git a/src/grammar/PhutilContextFreeGrammar.php b/src/grammar/PhutilContextFreeGrammar.php
--- a/src/grammar/PhutilContextFreeGrammar.php
+++ b/src/grammar/PhutilContextFreeGrammar.php
@@ -3,7 +3,7 @@
/**
* Generate nonsense test data according to a context-free grammar definition.
*/
-abstract class PhutilContextFreeGrammar {
+abstract class PhutilContextFreeGrammar extends Phobject {
private $limit = 65535;
diff --git a/src/internationalization/PhutilNumber.php b/src/internationalization/PhutilNumber.php
--- a/src/internationalization/PhutilNumber.php
+++ b/src/internationalization/PhutilNumber.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilNumber {
+final class PhutilNumber extends Phobject {
private $value;
private $decimals = 0;
diff --git a/src/internationalization/PhutilTranslator.php b/src/internationalization/PhutilTranslator.php
--- a/src/internationalization/PhutilTranslator.php
+++ b/src/internationalization/PhutilTranslator.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilTranslator {
+final class PhutilTranslator extends Phobject {
private static $instance;
diff --git a/src/internationalization/__tests__/PhutilPersonTest.php b/src/internationalization/__tests__/PhutilPersonTest.php
--- a/src/internationalization/__tests__/PhutilPersonTest.php
+++ b/src/internationalization/__tests__/PhutilPersonTest.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilPersonTest implements PhutilPerson {
+final class PhutilPersonTest extends Phobject implements PhutilPerson {
private $sex = PhutilPerson::SEX_UNKNOWN;
diff --git a/src/lexer/PhutilLexer.php b/src/lexer/PhutilLexer.php
--- a/src/lexer/PhutilLexer.php
+++ b/src/lexer/PhutilLexer.php
@@ -74,7 +74,7 @@
* @task rule Lexer Rules
* @task tokens Lexer Tokens
*/
-abstract class PhutilLexer {
+abstract class PhutilLexer extends Phobject {
private $processedRules;
private $lastState;
diff --git a/src/markup/PhutilMarkupEngine.php b/src/markup/PhutilMarkupEngine.php
--- a/src/markup/PhutilMarkupEngine.php
+++ b/src/markup/PhutilMarkupEngine.php
@@ -1,6 +1,6 @@
<?php
-abstract class PhutilMarkupEngine {
+abstract class PhutilMarkupEngine extends Phobject {
/**
* Set a configuration parameter which the engine can read to customize how
diff --git a/src/markup/PhutilSafeHTML.php b/src/markup/PhutilSafeHTML.php
--- a/src/markup/PhutilSafeHTML.php
+++ b/src/markup/PhutilSafeHTML.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilSafeHTML {
+final class PhutilSafeHTML extends Phobject {
private $content;
diff --git a/src/markup/engine/PhutilRemarkupEngine.php b/src/markup/engine/PhutilRemarkupEngine.php
--- a/src/markup/engine/PhutilRemarkupEngine.php
+++ b/src/markup/engine/PhutilRemarkupEngine.php
@@ -14,6 +14,7 @@
private $metadata = array();
private $states = array();
private $postprocessRules = array();
+ private $storage;
public function setConfig($key, $value) {
$this->config[$key] = $value;
@@ -129,7 +130,7 @@
$output = $this->flattenOutput($output);
$map = $this->storage->getMap();
- unset($this->storage);
+ $this->storage = null;
$metadata = $this->metadata;
diff --git a/src/markup/engine/remarkup/PhutilRemarkupBlockStorage.php b/src/markup/engine/remarkup/PhutilRemarkupBlockStorage.php
--- a/src/markup/engine/remarkup/PhutilRemarkupBlockStorage.php
+++ b/src/markup/engine/remarkup/PhutilRemarkupBlockStorage.php
@@ -30,7 +30,7 @@
*
* This class generates keys, and stores the map of keys to replacement text.
*/
-final class PhutilRemarkupBlockStorage {
+final class PhutilRemarkupBlockStorage extends Phobject {
const MAGIC_BYTE = "\1";
diff --git a/src/markup/engine/remarkup/blockrule/PhutilRemarkupBlockInterpreter.php b/src/markup/engine/remarkup/blockrule/PhutilRemarkupBlockInterpreter.php
--- a/src/markup/engine/remarkup/blockrule/PhutilRemarkupBlockInterpreter.php
+++ b/src/markup/engine/remarkup/blockrule/PhutilRemarkupBlockInterpreter.php
@@ -1,6 +1,6 @@
<?php
-abstract class PhutilRemarkupBlockInterpreter {
+abstract class PhutilRemarkupBlockInterpreter extends Phobject {
private $engine;
diff --git a/src/markup/engine/remarkup/blockrule/PhutilRemarkupBlockRule.php b/src/markup/engine/remarkup/blockrule/PhutilRemarkupBlockRule.php
--- a/src/markup/engine/remarkup/blockrule/PhutilRemarkupBlockRule.php
+++ b/src/markup/engine/remarkup/blockrule/PhutilRemarkupBlockRule.php
@@ -1,6 +1,6 @@
<?php
-abstract class PhutilRemarkupBlockRule {
+abstract class PhutilRemarkupBlockRule extends Phobject {
private $engine;
private $rules = array();
diff --git a/src/markup/engine/remarkup/markuprule/PhutilRemarkupRule.php b/src/markup/engine/remarkup/markuprule/PhutilRemarkupRule.php
--- a/src/markup/engine/remarkup/markuprule/PhutilRemarkupRule.php
+++ b/src/markup/engine/remarkup/markuprule/PhutilRemarkupRule.php
@@ -1,6 +1,6 @@
<?php
-abstract class PhutilRemarkupRule {
+abstract class PhutilRemarkupRule extends Phobject {
private $engine;
private $replaceCallback;
diff --git a/src/markup/syntax/engine/PhutilSyntaxHighlighterEngine.php b/src/markup/syntax/engine/PhutilSyntaxHighlighterEngine.php
--- a/src/markup/syntax/engine/PhutilSyntaxHighlighterEngine.php
+++ b/src/markup/syntax/engine/PhutilSyntaxHighlighterEngine.php
@@ -1,6 +1,6 @@
<?php
-abstract class PhutilSyntaxHighlighterEngine {
+abstract class PhutilSyntaxHighlighterEngine extends Phobject {
abstract public function setConfig($key, $value);
abstract public function getHighlightFuture($language, $source);
diff --git a/src/markup/syntax/highlighter/PhutilConsoleSyntaxHighlighter.php b/src/markup/syntax/highlighter/PhutilConsoleSyntaxHighlighter.php
--- a/src/markup/syntax/highlighter/PhutilConsoleSyntaxHighlighter.php
+++ b/src/markup/syntax/highlighter/PhutilConsoleSyntaxHighlighter.php
@@ -4,7 +4,7 @@
* Simple syntax highlighter for console output. We just try to highlight the
* commands so it's easier to follow transcripts.
*/
-final class PhutilConsoleSyntaxHighlighter {
+final class PhutilConsoleSyntaxHighlighter extends Phobject {
private $config = array();
private $replaceClass;
diff --git a/src/markup/syntax/highlighter/PhutilDefaultSyntaxHighlighter.php b/src/markup/syntax/highlighter/PhutilDefaultSyntaxHighlighter.php
--- a/src/markup/syntax/highlighter/PhutilDefaultSyntaxHighlighter.php
+++ b/src/markup/syntax/highlighter/PhutilDefaultSyntaxHighlighter.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilDefaultSyntaxHighlighter {
+final class PhutilDefaultSyntaxHighlighter extends Phobject {
public function setConfig($key, $value) {
return $this;
diff --git a/src/markup/syntax/highlighter/PhutilDivinerSyntaxHighlighter.php b/src/markup/syntax/highlighter/PhutilDivinerSyntaxHighlighter.php
--- a/src/markup/syntax/highlighter/PhutilDivinerSyntaxHighlighter.php
+++ b/src/markup/syntax/highlighter/PhutilDivinerSyntaxHighlighter.php
@@ -4,7 +4,7 @@
* Simple syntax highlighter for the ".diviner" format, which is just Remarkup
* with a specific ruleset. This should also work alright for Remarkup.
*/
-final class PhutilDivinerSyntaxHighlighter {
+final class PhutilDivinerSyntaxHighlighter extends Phobject {
private $config = array();
private $replaceClass;
diff --git a/src/markup/syntax/highlighter/PhutilInvisibleSyntaxHighlighter.php b/src/markup/syntax/highlighter/PhutilInvisibleSyntaxHighlighter.php
--- a/src/markup/syntax/highlighter/PhutilInvisibleSyntaxHighlighter.php
+++ b/src/markup/syntax/highlighter/PhutilInvisibleSyntaxHighlighter.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilInvisibleSyntaxHighlighter {
+final class PhutilInvisibleSyntaxHighlighter extends Phobject {
private $config = array();
diff --git a/src/markup/syntax/highlighter/PhutilPygmentsSyntaxHighlighter.php b/src/markup/syntax/highlighter/PhutilPygmentsSyntaxHighlighter.php
--- a/src/markup/syntax/highlighter/PhutilPygmentsSyntaxHighlighter.php
+++ b/src/markup/syntax/highlighter/PhutilPygmentsSyntaxHighlighter.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilPygmentsSyntaxHighlighter {
+final class PhutilPygmentsSyntaxHighlighter extends Phobject {
private $config = array();
diff --git a/src/markup/syntax/highlighter/PhutilRainbowSyntaxHighlighter.php b/src/markup/syntax/highlighter/PhutilRainbowSyntaxHighlighter.php
--- a/src/markup/syntax/highlighter/PhutilRainbowSyntaxHighlighter.php
+++ b/src/markup/syntax/highlighter/PhutilRainbowSyntaxHighlighter.php
@@ -4,7 +4,7 @@
* Highlights source code with a rainbow of colors, regardless of the language.
* This highlighter is useless, absurd, and extremely slow.
*/
-final class PhutilRainbowSyntaxHighlighter {
+final class PhutilRainbowSyntaxHighlighter extends Phobject {
private $config = array();
diff --git a/src/markup/syntax/highlighter/PhutilSyntaxHighlighter.php b/src/markup/syntax/highlighter/PhutilSyntaxHighlighter.php
--- a/src/markup/syntax/highlighter/PhutilSyntaxHighlighter.php
+++ b/src/markup/syntax/highlighter/PhutilSyntaxHighlighter.php
@@ -1,6 +1,6 @@
<?php
-abstract class PhutilSyntaxHighlighter {
+abstract class PhutilSyntaxHighlighter extends Phobject {
abstract public function setConfig($key, $value);
abstract public function getHighlightFuture($source);
}
diff --git a/src/markup/syntax/highlighter/PhutilXHPASTSyntaxHighlighter.php b/src/markup/syntax/highlighter/PhutilXHPASTSyntaxHighlighter.php
--- a/src/markup/syntax/highlighter/PhutilXHPASTSyntaxHighlighter.php
+++ b/src/markup/syntax/highlighter/PhutilXHPASTSyntaxHighlighter.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilXHPASTSyntaxHighlighter {
+final class PhutilXHPASTSyntaxHighlighter extends Phobject {
public function getHighlightFuture($source) {
$scrub = false;
diff --git a/src/moduleutils/PhutilLibraryMapBuilder.php b/src/moduleutils/PhutilLibraryMapBuilder.php
--- a/src/moduleutils/PhutilLibraryMapBuilder.php
+++ b/src/moduleutils/PhutilLibraryMapBuilder.php
@@ -9,7 +9,7 @@
* @task symbol Symbol Analysis and Caching
* @task source Source Management
*/
-final class PhutilLibraryMapBuilder {
+final class PhutilLibraryMapBuilder extends Phobject {
private $root;
private $quiet = true;
diff --git a/src/parser/PhutilBugtraqParser.php b/src/parser/PhutilBugtraqParser.php
--- a/src/parser/PhutilBugtraqParser.php
+++ b/src/parser/PhutilBugtraqParser.php
@@ -23,7 +23,7 @@
* Issues: http://bugs.com/123, http://bugs.com/345
*
*/
-final class PhutilBugtraqParser {
+final class PhutilBugtraqParser extends Phobject {
private $bugtraqPattern;
private $bugtraqCaptureExpression;
diff --git a/src/parser/PhutilDocblockParser.php b/src/parser/PhutilDocblockParser.php
--- a/src/parser/PhutilDocblockParser.php
+++ b/src/parser/PhutilDocblockParser.php
@@ -4,7 +4,7 @@
* Parse a docblock comment from source code into raw text documentation and
* metadata (like "@author" and "@return").
*/
-final class PhutilDocblockParser {
+final class PhutilDocblockParser extends Phobject {
public function extractDocblocks($text) {
$blocks = array();
diff --git a/src/parser/PhutilEditorConfig.php b/src/parser/PhutilEditorConfig.php
--- a/src/parser/PhutilEditorConfig.php
+++ b/src/parser/PhutilEditorConfig.php
@@ -3,7 +3,7 @@
/**
* Parser for [[http://editorconfig.org/ | EditorConfig]] files.
*/
-final class PhutilEditorConfig {
+final class PhutilEditorConfig extends Phobject {
const CHARSET = 'charset';
const END_OF_LINE = 'end_of_line';
diff --git a/src/parser/PhutilEmailAddress.php b/src/parser/PhutilEmailAddress.php
--- a/src/parser/PhutilEmailAddress.php
+++ b/src/parser/PhutilEmailAddress.php
@@ -6,7 +6,7 @@
* it should parse all reasonable addresses which are actually in use on the
* internet today.
*/
-final class PhutilEmailAddress {
+final class PhutilEmailAddress extends Phobject {
private $displayName;
private $localPart;
diff --git a/src/parser/PhutilGitURI.php b/src/parser/PhutilGitURI.php
--- a/src/parser/PhutilGitURI.php
+++ b/src/parser/PhutilGitURI.php
@@ -14,7 +14,7 @@
* path is interpreted as relative on the remote, rather than absolute (as with
* normal URIs).
*/
-final class PhutilGitURI {
+final class PhutilGitURI extends Phobject {
private $user;
private $domain;
diff --git a/src/parser/PhutilJSON.php b/src/parser/PhutilJSON.php
--- a/src/parser/PhutilJSON.php
+++ b/src/parser/PhutilJSON.php
@@ -6,7 +6,7 @@
* @task pretty Formatting JSON Objects
* @task internal Internals
*/
-final class PhutilJSON {
+final class PhutilJSON extends Phobject {
/* -( Formatting JSON Objects )-------------------------------------------- */
diff --git a/src/parser/PhutilJSONParser.php b/src/parser/PhutilJSONParser.php
--- a/src/parser/PhutilJSONParser.php
+++ b/src/parser/PhutilJSONParser.php
@@ -6,7 +6,7 @@
* @phutil-external-symbol class JsonLintJsonParser
* @phutil-external-symbol class JsonLintParsingException
*/
-final class PhutilJSONParser {
+final class PhutilJSONParser extends Phobject {
private $allowDuplicateKeys = false;
diff --git a/src/parser/PhutilLanguageGuesser.php b/src/parser/PhutilLanguageGuesser.php
--- a/src/parser/PhutilLanguageGuesser.php
+++ b/src/parser/PhutilLanguageGuesser.php
@@ -4,7 +4,7 @@
* Very simple class to guess the languages of source files which we failed to
* determine by examining file name/extension rules.
*/
-final class PhutilLanguageGuesser {
+final class PhutilLanguageGuesser extends Phobject {
/**
* Guess which computer programming language a file is written in.
diff --git a/src/parser/PhutilParserGenerator.php b/src/parser/PhutilParserGenerator.php
--- a/src/parser/PhutilParserGenerator.php
+++ b/src/parser/PhutilParserGenerator.php
@@ -52,7 +52,7 @@
* @task tables Computing Action and Goto Tables
* @task inspect Inspecting Generator State
*/
-final class PhutilParserGenerator {
+final class PhutilParserGenerator extends Phobject {
private $terminals;
private $rules;
diff --git a/src/parser/PhutilQueryStringParser.php b/src/parser/PhutilQueryStringParser.php
--- a/src/parser/PhutilQueryStringParser.php
+++ b/src/parser/PhutilQueryStringParser.php
@@ -24,7 +24,7 @@
* we'd like to be able to parse all valid query strings without destroying any
* data, this class implements a less-encumbered parser.
*/
-final class PhutilQueryStringParser {
+final class PhutilQueryStringParser extends Phobject {
/**
diff --git a/src/parser/PhutilSimpleOptions.php b/src/parser/PhutilSimpleOptions.php
--- a/src/parser/PhutilSimpleOptions.php
+++ b/src/parser/PhutilSimpleOptions.php
@@ -11,7 +11,7 @@
* @task config Parser Configuration
* @task internal Internals
*/
-final class PhutilSimpleOptions {
+final class PhutilSimpleOptions extends Phobject {
private $caseSensitive;
diff --git a/src/parser/PhutilTypeSpec.php b/src/parser/PhutilTypeSpec.php
--- a/src/parser/PhutilTypeSpec.php
+++ b/src/parser/PhutilTypeSpec.php
@@ -39,7 +39,7 @@
* string (uppercase)
*
*/
-final class PhutilTypeSpec {
+final class PhutilTypeSpec extends Phobject {
private $type;
private $subtypes = array();
diff --git a/src/parser/PhutilURI.php b/src/parser/PhutilURI.php
--- a/src/parser/PhutilURI.php
+++ b/src/parser/PhutilURI.php
@@ -3,7 +3,7 @@
/**
* Basic URI parser object.
*/
-final class PhutilURI {
+final class PhutilURI extends Phobject {
private $protocol;
private $user;
diff --git a/src/parser/aast/api/AASTNode.php b/src/parser/aast/api/AASTNode.php
--- a/src/parser/aast/api/AASTNode.php
+++ b/src/parser/aast/api/AASTNode.php
@@ -1,11 +1,12 @@
<?php
-abstract class AASTNode {
+abstract class AASTNode extends Phobject {
protected $id;
protected $l;
protected $r;
protected $typeID;
+ protected $typeName;
protected $tree;
// These are public only as a microoptimization to make tree construction
@@ -13,6 +14,8 @@
public $children = array();
public $parentNode;
+ private $selectCache;
+
abstract public function isStaticScalar();
abstract public function getDocblockToken();
abstract public function evalStatic();
diff --git a/src/parser/aast/api/AASTNodeList.php b/src/parser/aast/api/AASTNodeList.php
--- a/src/parser/aast/api/AASTNodeList.php
+++ b/src/parser/aast/api/AASTNodeList.php
@@ -1,6 +1,8 @@
<?php
-final class AASTNodeList implements Countable, Iterator {
+final class AASTNodeList
+ extends Phobject
+ implements Countable, Iterator {
protected $list;
protected $tree;
diff --git a/src/parser/aast/api/AASTToken.php b/src/parser/aast/api/AASTToken.php
--- a/src/parser/aast/api/AASTToken.php
+++ b/src/parser/aast/api/AASTToken.php
@@ -1,6 +1,6 @@
<?php
-abstract class AASTToken {
+abstract class AASTToken extends Phobject {
protected $id;
protected $typeID;
diff --git a/src/parser/aast/api/AASTTree.php b/src/parser/aast/api/AASTTree.php
--- a/src/parser/aast/api/AASTTree.php
+++ b/src/parser/aast/api/AASTTree.php
@@ -3,7 +3,7 @@
/**
* An abstract abstract syntax tree.
*/
-abstract class AASTTree {
+abstract class AASTTree extends Phobject {
protected $tree = array();
protected $stream = array();
diff --git a/src/parser/argument/PhutilArgumentParser.php b/src/parser/argument/PhutilArgumentParser.php
--- a/src/parser/argument/PhutilArgumentParser.php
+++ b/src/parser/argument/PhutilArgumentParser.php
@@ -66,7 +66,7 @@
* @task help Command Help
* @task internal Internals
*/
-final class PhutilArgumentParser {
+final class PhutilArgumentParser extends Phobject {
private $bin;
private $argv;
diff --git a/src/parser/argument/PhutilArgumentSpecification.php b/src/parser/argument/PhutilArgumentSpecification.php
--- a/src/parser/argument/PhutilArgumentSpecification.php
+++ b/src/parser/argument/PhutilArgumentSpecification.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilArgumentSpecification {
+final class PhutilArgumentSpecification extends Phobject {
private $name;
private $help;
diff --git a/src/parser/argument/workflow/PhutilArgumentWorkflow.php b/src/parser/argument/workflow/PhutilArgumentWorkflow.php
--- a/src/parser/argument/workflow/PhutilArgumentWorkflow.php
+++ b/src/parser/argument/workflow/PhutilArgumentWorkflow.php
@@ -73,7 +73,7 @@
*
* @concrete-extensible
*/
-class PhutilArgumentWorkflow {
+class PhutilArgumentWorkflow extends Phobject {
private $name;
private $synopsis;
diff --git a/src/parser/xhpast/bin/PhutilXHPASTBinary.php b/src/parser/xhpast/bin/PhutilXHPASTBinary.php
--- a/src/parser/xhpast/bin/PhutilXHPASTBinary.php
+++ b/src/parser/xhpast/bin/PhutilXHPASTBinary.php
@@ -1,6 +1,6 @@
<?php
-final class PhutilXHPASTBinary {
+final class PhutilXHPASTBinary extends Phobject {
/**
* The expected XHPAST version.
diff --git a/src/phage/agent/PhagePHPAgent.php b/src/phage/agent/PhagePHPAgent.php
--- a/src/phage/agent/PhagePHPAgent.php
+++ b/src/phage/agent/PhagePHPAgent.php
@@ -1,6 +1,6 @@
<?php
-final class PhagePHPAgent {
+final class PhagePHPAgent extends Phobject {
private $stdin;
private $master;
diff --git a/src/phage/bootloader/PhageAgentBootloader.php b/src/phage/bootloader/PhageAgentBootloader.php
--- a/src/phage/bootloader/PhageAgentBootloader.php
+++ b/src/phage/bootloader/PhageAgentBootloader.php
@@ -1,6 +1,6 @@
<?php
-abstract class PhageAgentBootloader {
+abstract class PhageAgentBootloader extends Phobject {
abstract public function getName();
abstract public function getBootCommand();
diff --git a/src/phage/util/PhutilBallOfPHP.php b/src/phage/util/PhutilBallOfPHP.php
--- a/src/phage/util/PhutilBallOfPHP.php
+++ b/src/phage/util/PhutilBallOfPHP.php
@@ -4,7 +4,7 @@
* Concatenates PHP files together into a single stream. Used by Phage to
* transmit bootloading code.
*/
-final class PhutilBallOfPHP {
+final class PhutilBallOfPHP extends Phobject {
private $parts = array();
diff --git a/src/readableserializer/PhutilReadableSerializer.php b/src/readableserializer/PhutilReadableSerializer.php
--- a/src/readableserializer/PhutilReadableSerializer.php
+++ b/src/readableserializer/PhutilReadableSerializer.php
@@ -7,7 +7,7 @@
* @task print Printing PHP Values
* @task internal Internals
*/
-final class PhutilReadableSerializer {
+final class PhutilReadableSerializer extends Phobject {
/* -( Printing PHP Values )------------------------------------------------ */
diff --git a/src/serviceprofiler/PhutilServiceProfiler.php b/src/serviceprofiler/PhutilServiceProfiler.php
--- a/src/serviceprofiler/PhutilServiceProfiler.php
+++ b/src/serviceprofiler/PhutilServiceProfiler.php
@@ -4,7 +4,7 @@
* Simple event store for service calls, so they can be printed to stdout or
* displayed in a debug console.
*/
-final class PhutilServiceProfiler {
+final class PhutilServiceProfiler extends Phobject {
private static $instance;
private $listeners = array();
diff --git a/src/sprites/PhutilSprite.php b/src/sprites/PhutilSprite.php
--- a/src/sprites/PhutilSprite.php
+++ b/src/sprites/PhutilSprite.php
@@ -3,7 +3,7 @@
/**
* NOTE: This is very new and unstable.
*/
-final class PhutilSprite {
+final class PhutilSprite extends Phobject {
private $sourceFiles = array();
private $sourceX;
diff --git a/src/sprites/PhutilSpriteSheet.php b/src/sprites/PhutilSpriteSheet.php
--- a/src/sprites/PhutilSpriteSheet.php
+++ b/src/sprites/PhutilSpriteSheet.php
@@ -3,7 +3,7 @@
/**
* NOTE: This is very new and unstable.
*/
-final class PhutilSpriteSheet {
+final class PhutilSpriteSheet extends Phobject {
const MANIFEST_VERSION = 1;
diff --git a/src/utils/AbstractDirectedGraph.php b/src/utils/AbstractDirectedGraph.php
--- a/src/utils/AbstractDirectedGraph.php
+++ b/src/utils/AbstractDirectedGraph.php
@@ -28,7 +28,7 @@
* @task cycle Cycle Detection
* @task explore Graph Exploration
*/
-abstract class AbstractDirectedGraph {
+abstract class AbstractDirectedGraph extends Phobject {
private $knownNodes = array();
diff --git a/src/utils/PhutilBufferedIterator.php b/src/utils/PhutilBufferedIterator.php
--- a/src/utils/PhutilBufferedIterator.php
+++ b/src/utils/PhutilBufferedIterator.php
@@ -12,7 +12,7 @@
* @task config Configuration
* @task iterator Iterator Implementation
*/
-abstract class PhutilBufferedIterator implements Iterator {
+abstract class PhutilBufferedIterator extends Phobject implements Iterator {
private $data;
private $pageSize = 100;
diff --git a/src/utils/PhutilChunkedIterator.php b/src/utils/PhutilChunkedIterator.php
--- a/src/utils/PhutilChunkedIterator.php
+++ b/src/utils/PhutilChunkedIterator.php
@@ -1,9 +1,10 @@
<?php
/**
- * This is an iterator version of array_chunk().
+ * This is an iterator version of `array_chunk()`.
*/
-final class PhutilChunkedIterator implements Iterator {
+final class PhutilChunkedIterator extends Phobject implements Iterator {
+
private $iterator;
private $size;
diff --git a/src/utils/PhutilEditDistanceMatrix.php b/src/utils/PhutilEditDistanceMatrix.php
--- a/src/utils/PhutilEditDistanceMatrix.php
+++ b/src/utils/PhutilEditDistanceMatrix.php
@@ -45,7 +45,7 @@
* delete = 1, replace = 1) and computing edit distances for strings of fewer
* than 1,000 characters, you might set the alter cost to 0.001.
*/
-final class PhutilEditDistanceMatrix {
+final class PhutilEditDistanceMatrix extends Phobject {
private $insertCost = 1;
private $deleteCost = 1;
diff --git a/src/utils/PhutilExecutionEnvironment.php b/src/utils/PhutilExecutionEnvironment.php
--- a/src/utils/PhutilExecutionEnvironment.php
+++ b/src/utils/PhutilExecutionEnvironment.php
@@ -3,7 +3,7 @@
/**
* Get information about the current execution environment.
*/
-final class PhutilExecutionEnvironment {
+final class PhutilExecutionEnvironment extends Phobject {
public static function getOSXVersion() {
if (php_uname('s') != 'Darwin') {
diff --git a/src/utils/PhutilLunarPhase.php b/src/utils/PhutilLunarPhase.php
--- a/src/utils/PhutilLunarPhase.php
+++ b/src/utils/PhutilLunarPhase.php
@@ -6,7 +6,7 @@
* $moon = new PhutilLunarPhase(time());
* $moon->isFull();
*/
-final class PhutilLunarPhase {
+final class PhutilLunarPhase extends Phobject {
private $epoch;
diff --git a/src/utils/__tests__/MFilterTestHelper.php b/src/utils/__tests__/MFilterTestHelper.php
--- a/src/utils/__tests__/MFilterTestHelper.php
+++ b/src/utils/__tests__/MFilterTestHelper.php
@@ -1,6 +1,6 @@
<?php
-final class MFilterTestHelper {
+final class MFilterTestHelper extends Phobject {
private $h;
private $i;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Dec 19, 7:12 AM (11 h, 49 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6905275
Default Alt Text
D13280.diff (53 KB)
Attached To
Mode
D13280: Extend from Phobject
Attached
Detach File
Event Timeline
Log In to Comment