Page MenuHomePhabricator

Improve SpecialPage and intermediate subclasses
Open, Needs TriagePublic

Description

At the moment the class SpecialPage and the intermediate subclasses are inconsistent. Some parameters get set via (optional) constructor parameters, some parameters get set via direct access on the the properties, some parameters get set via overwriting methods, some parameter get set via several ways. This task makes the class SpecialPage and the intermediate subclasses consistent:

  • The class SpecialPage and the intermediate subclasses should be marked as abstract. This prevents direct instantiations. Extend the class and instantiate the subclass instead. This is already the normal way for creating special pages. Direct instantiations are not needed. Abstract classes can contain abstract methods which force overwriting.
  • Only use overwriting of the methods to set parameters. This the more flexible way.
  • Remove the constructor parameters. This allows to use the constructor parameters for dependency injection.
  • Remove not needed properties. By using method overwriting some properties are not needed anymore.

Event Timeline

Change #1235825 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/core@master] Mark the SpecialPage root and intermediate classes as abstract

https://gerrit.wikimedia.org/r/1235825

Change #1235449 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/core@master] SpecialPage: Hard deprecate constructor parameter $includable

https://gerrit.wikimedia.org/r/1235449

Change #1235476 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/core@master] SpecialPage: Hard deprecate property $mIncludable

https://gerrit.wikimedia.org/r/1235476

Change #1237644 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/core@master] SpecialPage: Hard deprecate unused constructor parameters

https://gerrit.wikimedia.org/r/1237644

Change #1235480 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/core@master] SpecialPage: Remove $mIncludable and constructor parameter $includable

https://gerrit.wikimedia.org/r/1235480

Change #1235481 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/core@master] SpecialPage: Hard deprecate constructor parameter $listed

https://gerrit.wikimedia.org/r/1235481

Change #1235547 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/core@master] SpecialPage: Allow to overwrite getRestriction()

https://gerrit.wikimedia.org/r/1235547

Change #1235566 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/core@master] SpecialPage: Hard deprecate constructor parameter $restriction

https://gerrit.wikimedia.org/r/1235566

Change #1237936 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/core@master] SpecialPage: Make property $mRestriction private

https://gerrit.wikimedia.org/r/1237936

Change #1239251 had a related patch set uploaded (by Fomafix; author: Fomafix):

[mediawiki/core@master] Mark the SpecialPage root and intermediate classes as abstract

https://gerrit.wikimedia.org/r/1239251