New Title::castFromLinkTarget/TitleValue
These behave the same as newFromLinkTarget/TitleValue, but accept null as well (and then just return null). This makes things much easier when converting code from using Title to LinkTarget, because you can wrap in castFromLinkTarget without adding null checks. Change-Id: Id61f91d40b81ad226532917c43e51f0b69af712c
This commit is contained in:
parent
4cebf80a89
commit
37fcedbb3f
2 changed files with 34 additions and 0 deletions
|
|
@ -246,6 +246,8 @@ class Title implements LinkTarget, IDBAccessObject {
|
|||
* unless $forceClone is "clone". If $forceClone is "clone" and the given TitleValue
|
||||
* is already a Title instance, that instance is copied using the clone operator.
|
||||
*
|
||||
* @deprecated since 1.34, use newFromLinkTarget or castFromLinkTarget
|
||||
*
|
||||
* @param TitleValue $titleValue Assumed to be safe.
|
||||
* @param string $forceClone set to NEW_CLONE to ensure a fresh instance is returned.
|
||||
*
|
||||
|
|
@ -283,6 +285,17 @@ class Title implements LinkTarget, IDBAccessObject {
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Same as newFromLinkTarget, but if passed null, returns null.
|
||||
*
|
||||
* @param LinkTarget|null $linkTarget Assumed to be safe (if not null).
|
||||
*
|
||||
* @return Title|null
|
||||
*/
|
||||
public static function castFromLinkTarget( $linkTarget ) {
|
||||
return $linkTarget ? self::newFromLinkTarget( $linkTarget ) : null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new Title from text, such as what one would find in a link. De-
|
||||
* codes any HTML entities in the text.
|
||||
|
|
|
|||
|
|
@ -598,6 +598,27 @@ class TitleTest extends MediaWikiTestCase {
|
|||
$this->assertTrue( $clone->equals( $title ) );
|
||||
}
|
||||
|
||||
public function provideCastFromLinkTarget() {
|
||||
return array_merge( [ [ null ] ], self::provideNewFromTitleValue() );
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers Title::castFromLinkTarget
|
||||
* @dataProvider provideCastFromLinkTarget
|
||||
*/
|
||||
public function testCastFromLinkTarget( $value ) {
|
||||
$title = Title::castFromLinkTarget( $value );
|
||||
|
||||
if ( $value === null ) {
|
||||
$this->assertNull( $title );
|
||||
} else {
|
||||
$dbkey = str_replace( ' ', '_', $value->getText() );
|
||||
$this->assertSame( $dbkey, $title->getDBkey() );
|
||||
$this->assertSame( $value->getNamespace(), $title->getNamespace() );
|
||||
$this->assertSame( $value->getFragment(), $title->getFragment() );
|
||||
}
|
||||
}
|
||||
|
||||
public static function provideGetTitleValue() {
|
||||
return [
|
||||
[ 'Foo' ],
|
||||
|
|
|
|||
Loading…
Reference in a new issue