From 6a1aef21b69152f38dc2474697070985260f9a29 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Tue, 12 Jul 2011 20:32:09 +0000 Subject: [PATCH] Follow-up r91997, moved newFromTitle() function to WikiPage.php and renamed to factory(). This avoids an extra class. --- includes/AutoLoader.php | 1 - includes/WikiPage.php | 23 +++++++++++++++++++++ includes/WikiPageFactory.php | 28 -------------------------- tests/phpunit/includes/ArticleTest.php | 6 +++--- 4 files changed, 26 insertions(+), 32 deletions(-) delete mode 100644 includes/WikiPageFactory.php diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index 41daa7bb75..af97abf693 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -243,7 +243,6 @@ $wgAutoloadLocalClasses = array( 'WikiFilePage' => 'includes/WikiFilePage.php', 'WikiImporter' => 'includes/Import.php', 'WikiPage' => 'includes/WikiPage.php', - 'WikiPageFactory' => 'includes/WikiPageFactory.php', 'WikiRevision' => 'includes/Import.php', 'WikiMap' => 'includes/WikiMap.php', 'WikiReference' => 'includes/WikiMap.php', diff --git a/includes/WikiPage.php b/includes/WikiPage.php index 58706ce6c7..61bda70b2f 100644 --- a/includes/WikiPage.php +++ b/includes/WikiPage.php @@ -47,6 +47,29 @@ class WikiPage extends Page { $this->mTitle = $title; } + /** + * Create a WikiPage object of the appropriate class for the given title. + * + * @param $title Title + * @return WikiPage object of the appropriate type + */ + public static function factory( Title $title ) { + switch( $title->getNamespace() ) { + case NS_MEDIA: + throw new MWException( "NS_MEDIA is a virtual namespace" ); + case NS_FILE: + $page = new WikiFilePage( $title ); + break; + case NS_CATEGORY: + $page = new WikiCategoryPage( $title ); + break; + default: + $page = new WikiPage( $title ); + } + + return $page; + } + /** * Constructor from a page id * diff --git a/includes/WikiPageFactory.php b/includes/WikiPageFactory.php deleted file mode 100644 index 4310c387de..0000000000 --- a/includes/WikiPageFactory.php +++ /dev/null @@ -1,28 +0,0 @@ -getNamespace() ) { - case NS_MEDIA: - throw new MWException( "NS_MEDIA is a virtual namespace" ); - case NS_FILE: - $page = new WikiFilePage( $title ); - break; - case NS_CATEGORY: - $page = new WikiCategoryPage( $title ); - break; - default: - $page = new WikiPage( $title ); - } - - return $page; - } -} diff --git a/tests/phpunit/includes/ArticleTest.php b/tests/phpunit/includes/ArticleTest.php index 449851c56b..18c970d2c1 100644 --- a/tests/phpunit/includes/ArticleTest.php +++ b/tests/phpunit/includes/ArticleTest.php @@ -65,15 +65,15 @@ class ArticleTest extends MediaWikiTestCase { function testWikiPageFactory() { $title = Title::makeTitle( NS_FILE, 'Someimage.png' ); - $page = WikiPageFactory::newFromTitle( $title ); + $page = WikiPage::factory( $title ); $this->assertEquals( 'WikiFilePage', get_class( $page ) ); $title = Title::makeTitle( NS_CATEGORY, 'SomeCategory' ); - $page = WikiPageFactory::newFromTitle( $title ); + $page = WikiPage::factory( $title ); $this->assertEquals( 'WikiCategoryPage', get_class( $page ) ); $title = Title::makeTitle( NS_MAIN, 'SomePage' ); - $page = WikiPageFactory::newFromTitle( $title ); + $page = WikiPage::factory( $title ); $this->assertEquals( 'WikiPage', get_class( $page ) ); } } -- 2.20.1