wiki.techinc.nl/includes/title/TitleFactory.php
Derick Alangi 4e468b49e0 title: Make TitleArrayFromResult via TitleFactory service
The TitleFactory should really be where TitleArrayFromResult should
live as it's a place where Title objects are created based on certain
specifications.

This patch tries to consolidate the creation of TitleArrayFromResult
via the TitleFactory services and in the future, we will consolidate
more of the logic and kill TitleArrayFromResult.

Follow up on: a99ec1b and e54665d.

Change-Id: I98215af3252d756de4435b77d1280dacda8e85dc
2024-01-23 14:07:07 +00:00

206 lines
5.2 KiB
PHP

<?php
/**
* Factory for creating Title objects without static coupling.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
* @file
*/
namespace MediaWiki\Title;
use MediaWiki\Linker\LinkTarget;
use MediaWiki\Page\PageIdentity;
use MediaWiki\Page\PageReference;
use MessageLocalizer;
use Wikimedia\Rdbms\IResultWrapper;
/**
* Creates Title objects.
*
* For now, there is nothing interesting in this class. It is meant for preventing static Title
* methods causing problems in unit tests.
*
* @since 1.35
*/
class TitleFactory {
/**
* @see Title::newFromDBkey
* @param string $key
* @return Title|null
*/
public function newFromDBkey( $key ): ?Title {
return Title::newFromDBkey( $key );
}
/**
* @see Title::newFromLinkTarget
* @param LinkTarget $linkTarget
* @param string $forceClone
* @return Title
*/
public function newFromLinkTarget( LinkTarget $linkTarget, $forceClone = '' ): Title {
return Title::newFromLinkTarget( $linkTarget, $forceClone );
}
/**
* @see Title::castFromLinkTarget
* @param LinkTarget|null $linkTarget
* @return Title|null
*/
public function castFromLinkTarget( ?LinkTarget $linkTarget ): ?Title {
return Title::castFromLinkTarget( $linkTarget );
}
/**
* @see Title::newFromPageIdentity
* @since 1.41
* @param PageIdentity $pageIdentity
* @return Title
*/
public function newFromPageIdentity( PageIdentity $pageIdentity ): Title {
return Title::newFromPageIdentity( $pageIdentity );
}
/**
* @see Title::castFromPageIdentity
* @since 1.36
* @param PageIdentity|null $pageIdentity
* @return Title|null
*/
public function castFromPageIdentity( ?PageIdentity $pageIdentity ): ?Title {
return Title::castFromPageIdentity( $pageIdentity );
}
/**
* @see Title::newFromPageReference
* @since 1.41
* @param PageReference $pageReference
* @return Title
*/
public function newFromPageReference( PageReference $pageReference ): Title {
return Title::newFromPageReference( $pageReference );
}
/**
* @see Title::castFromPageReference
* @since 1.37
* @param PageReference|null $pageReference
* @return Title|null
*/
public function castFromPageReference( ?PageReference $pageReference ): ?Title {
return Title::castFromPageReference( $pageReference );
}
/**
* @see Title::newFromText
* @param string|int|null $text
* @param int $defaultNamespace
* @return Title|null
* @throws \InvalidArgumentException
*/
public function newFromText( $text, $defaultNamespace = NS_MAIN ): ?Title {
return Title::newFromText( $text, $defaultNamespace );
}
/**
* @see Title::newFromTextThrow
* @param string $text
* @param int $defaultNamespace
* @return Title
* @throws MalformedTitleException
*/
public function newFromTextThrow( $text, $defaultNamespace = NS_MAIN ): Title {
return Title::newFromTextThrow( $text, $defaultNamespace );
}
/**
* @see Title::newFromURL
* @param string $url
* @return Title|null
*/
public function newFromURL( $url ): ?Title {
return Title::newFromURL( $url );
}
/**
* @see Title::newFromID
* @param int $id
* @param int $flags
* @return Title|null
*/
public function newFromID( $id, $flags = 0 ): ?Title {
return Title::newFromID( $id, $flags );
}
/**
* @see Title::newFromRow
* @param \stdClass $row
* @return Title
*/
public function newFromRow( $row ): Title {
return Title::newFromRow( $row );
}
/**
* @see Title::makeTitle
* @param int $ns
* @param string $title
* @param string $fragment
* @param string $interwiki
* @return Title
*/
public function makeTitle( $ns, $title, $fragment = '', $interwiki = '' ): Title {
return Title::makeTitle( $ns, $title, $fragment, $interwiki );
}
/**
* @see Title::makeTitleSafe
* @param int $ns
* @param string $title
* @param string $fragment
* @param string $interwiki
* @return Title|null
*/
public function makeTitleSafe( $ns, $title, $fragment = '', $interwiki = '' ): ?Title {
return Title::makeTitleSafe( $ns, $title, $fragment, $interwiki );
}
/**
* @see Title::newMainPage
* @param MessageLocalizer|null $localizer
* @return Title
*/
public function newMainPage( MessageLocalizer $localizer = null ): Title {
return Title::newMainPage( $localizer );
}
/**
* @since 1.42
* @param IResultWrapper $result
* @return TitleArrayFromResult
*/
public function newTitleArrayFromResult( IResultWrapper $result ) {
return new TitleArrayFromResult( $result );
}
}
/**
* @deprecated since 1.41
*/
class_alias( TitleFactory::class, 'TitleFactory' );