Previously, `new TitleValue()` was roughly twice as slow as
`Title::makeTitle()`. Switching to basic is_int/is_string checks
makes TitleValue roughly twice as fast as Title!
Tested with benchmarkTitleValue.php.
Bug: T201801
Change-Id: Idccf159983145c1c11af9182292e1d5f704ba077
*/
use MediaWiki\Linker\LinkTarget;
use Wikimedia\Assert\Assert;
*/
use MediaWiki\Linker\LinkTarget;
use Wikimedia\Assert\Assert;
+use Wikimedia\Assert\ParameterTypeException;
/**
* Represents a page (or page fragment) title within MediaWiki.
/**
* Represents a page (or page fragment) title within MediaWiki.
* @throws InvalidArgumentException
*/
public function __construct( $namespace, $dbkey, $fragment = '', $interwiki = '' ) {
* @throws InvalidArgumentException
*/
public function __construct( $namespace, $dbkey, $fragment = '', $interwiki = '' ) {
- Assert::parameterType( 'integer', $namespace, '$namespace' );
- Assert::parameterType( 'string', $dbkey, '$dbkey' );
- Assert::parameterType( 'string', $fragment, '$fragment' );
- Assert::parameterType( 'string', $interwiki, '$interwiki' );
+ if ( !is_int( $namespace ) ) {
+ throw new ParameterTypeException( '$namespace', 'int' );
+ }
+ if ( !is_string( $dbkey ) ) {
+ throw new ParameterTypeException( '$dbkey', 'string' );
+ }
+ if ( !is_string( $fragment ) ) {
+ throw new ParameterTypeException( '$fragment', 'string' );
+ }
+ if ( !is_string( $interwiki ) ) {
+ throw new ParameterTypeException( '$interwiki', 'string' );
+ }
// Sanity check, no full validation or normalization applied here!
Assert::parameter( !preg_match( '/^_|[ \r\n\t]|_$/', $dbkey ), '$dbkey',
// Sanity check, no full validation or normalization applied here!
Assert::parameter( !preg_match( '/^_|[ \r\n\t]|_$/', $dbkey ), '$dbkey',