Core Platform Team/Initiative/Stability annotations/newable
List of classes intended to be "newable".
Data objects edit
includes/title/TitleValue.php
includes/Revision/RevisionSlots.php
includes/Revision/MutableRevisionRecord.php
includes/DerivativeRequest.php
includes/MWTimestamp.php
includes/mail/MailAddress.php
includes/session/Token.php
includes/session/SessionId.php
includes/user/LoggedOutEditToken.php
includes/user/UserIdentityValue.php
includes/exception/ErrorPageError.php
includes/exception/MWException.php
includes/FauxRequest.php
includes/libs/Message/MessageValue.php
includes/libs/Message/DataMessageValue.php
includes/libs/Message/ScalarParam.php
includes/libs/Message/ListParam.php
includes/libs/HtmlArmor.php
includes/session/SessionInfo.php
includes/RawMessage.php
includes/api/ApiHelpParamValueMessage.php
includes/api/ApiMessage.php
includes/api/ApiRawMessage.php
includes/language/Message.php
includes/cache/dependency/FileDependency.php
includes/config/GlobalVarConfig.php
includes/libs/StaticArrayWriter.php
includes/libs/StatusValue.php
includes/parser/StripState.php
includes/Status.php
includes/content/TextContent.php
includes/content/WikitextContent.php
includes/content/JavaScriptContent.php
includes/content/CssContent.php
Also: (nearly) all Exceptions!
Wrapper objects edit
includes/libs/objectcache/HashBagOStuff.php
includes/libs/objectcache/CachedBagOStuff.php
includes/utils/BatchRowIterator.php
includes/StubObject.php
includes/ListToggle.php
includes/context/DerivativeContext.php
Tolerated, but need an alternative edit
These should be changed to not be newable, but alternatives need to be created first. Direct constructor usage will have to go though deprecation.
includes/ApiMain.php - needs factory
includes/media/BitmapMetadataHandler.php - should become a stateless service or use handler pattern
includes/GitInfo.php - should become a stateless service
includes/logging/LogPage.php - should become a stateless service or use command pattern
includes/logging/ManualLogEntry.php - should become a stateless service or use command pattern
includes/poolcounter/PoolCounterWorkViaCallback.php - needs a factory
includes/context/RequestContext.php - needs to be narrowed down, and should use a factory
includes/search/SearchHighlighter.php - should have a factory
includes/TitleArrayFromResult.php - should perhaps be part of TitleFactory
includes/user/User.php - should at least get a factory method for anons
includes/diff/Diff.php: needs a TextDiffGenerator service or a factory
includes/EditPage.php: needs a factory
DiffFormatter may need services, but the caller usually wants to control the specific type. Each could be a service, or we could have a registry for them.
includes/diff/ArrayDiffFormatter.php
includes/diff/UnifiedDiffFormatter.php
includes/diff/TableDiffFormatter.php
includes/diff/InlineDiffFormatter.php
Classes instantiated by extensions that should not be edit
Alternatives exist for:
includes/CommentStoreComment.php: FileImporter should use a factory method or mocks when constructing CommentStoreComment in tests.
includes/Revision/SlotRecord.php: Wikibase should use a factory method or mocks when constructing SlotRecords in tests.
includes/Title.php: several extensions need a better way to represent no title.
includes/cache/LinkBatch.php: several extensions should use LinkBatchFactory instead.
includes/interwiki/Interwiki.php JsonConfig: FauxInterwikiLookup
includes/page/Article.php: several extensions should use Article::newFromTitle instead.
includes/page/WikiPage.php: several extensions should use WikiPage::factory instead.
maintenance/includes/FakeMaintenance.php: OpenIDConnect needs to find a better way to run a maintenance script.
includes/filerepo/LocalRepo.php: some extensions should use RepoGroup instead.
includes/MovePage.php: several extensions should use MovePageFactory instead.
includes/parser/Parser.php: several extensions should use ParserFactory instead.
includes/parser/ParserOptions.php: several extensions should use one of the static factory methods instead.