Thiemo Mättig (WMDE) has uploaded a new change for review.
https://gerrit.wikimedia.org/r/232693
Change subject: Replace Iterator with Traversable and replace <Generics>
......................................................................
Replace Iterator with Traversable and replace <Generics>
This fixes two issues:
* The relevant interface is the traversable interface. Even functions
like iterator_to_array do not type hint against Iterator but against
Traversable.
* Type<Type> is not a valid type hint. This is not Java. My PHPStorm
for example completely ignores this. It needs a space.
Change-Id: I5a2e3569ae0a8f5cfaa969b2e4842718ba0d73e1
---
M client/includes/Changes/AffectedPagesFinder.php
M client/includes/Usage/NullUsageTracker.php
M client/includes/Usage/SiteLinkUsageLookup.php
M client/includes/Usage/Sql/EntityUsageTable.php
M client/includes/Usage/Sql/SqlUsageTracker.php
M client/includes/Usage/UsageLookup.php
M client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php
M client/tests/phpunit/includes/Usage/SiteLinkUsageLookupTest.php
M lib/includes/store/sql/TermSqlIndex.php
M repo/includes/Dumpers/DumpGenerator.php
M repo/includes/store/sql/EntityPerPageTable.php
11 files changed, 32 insertions(+), 30 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/93/232693/1
diff --git a/client/includes/Changes/AffectedPagesFinder.php
b/client/includes/Changes/AffectedPagesFinder.php
index 3ec8073..18d2527 100644
--- a/client/includes/Changes/AffectedPagesFinder.php
+++ b/client/includes/Changes/AffectedPagesFinder.php
@@ -9,8 +9,8 @@
use Diff\DiffOp\DiffOpChange;
use Diff\DiffOp\DiffOpRemove;
use InvalidArgumentException;
-use Iterator;
use Title;
+use Traversable;
use UnexpectedValueException;
use Wikibase\Change;
use Wikibase\Client\Store\TitleFactory;
@@ -106,7 +106,7 @@
*
* @param Change $change
*
- * @return Iterator of PageEntityUsage
+ * @return Traversable of PageEntityUsage
*/
public function getAffectedUsagesByPage( Change $change ) {
if ( $change instanceof EntityChange ) {
@@ -114,7 +114,7 @@
return $this->filterUpdates( $usages );
}
- return new \ArrayIterator();
+ return new ArrayIterator();
}
/**
@@ -178,7 +178,7 @@
*
* @param EntityChange $change
*
- * @return Iterator<PageEntityUsages>
+ * @return Traversable of PageEntityUsages
*/
private function getAffectedPages( EntityChange $change ) {
$entityId = $change->getEntityId();
@@ -276,9 +276,9 @@
* Filters updates based on namespace. This removes duplicates,
non-existing pages, and pages from
* namespaces that are not considered "enabled" by the namespace
checker.
*
- * @param PageEntityUsages[]|Iterator<PageEntityUsages> $updates
+ * @param PageEntityUsages[]|Traversable $usages
*
- * @return Iterator<PageEntityUsages>
+ * @return Traversable of PageEntityUsages
*/
private function filterUpdates( $usages ) {
$titlesToUpdate = array();
diff --git a/client/includes/Usage/NullUsageTracker.php
b/client/includes/Usage/NullUsageTracker.php
index 893efc9..92c38de 100644
--- a/client/includes/Usage/NullUsageTracker.php
+++ b/client/includes/Usage/NullUsageTracker.php
@@ -3,7 +3,7 @@
namespace Wikibase\Client\Usage;
use ArrayIterator;
-use Iterator;
+use Traversable;
use Wikibase\DataModel\Entity\EntityId;
/**
@@ -74,7 +74,7 @@
* @param EntityId[] $entities
* @param string[] $aspects
*
- * @return Iterator<PageEntityUsages>
+ * @return Traversable of PageEntityUsages
*/
public function getPagesUsing( array $entities, array $aspects =
array() ) {
return new ArrayIterator( array() );
diff --git a/client/includes/Usage/SiteLinkUsageLookup.php
b/client/includes/Usage/SiteLinkUsageLookup.php
index afe3582..8444d9d 100644
--- a/client/includes/Usage/SiteLinkUsageLookup.php
+++ b/client/includes/Usage/SiteLinkUsageLookup.php
@@ -4,7 +4,7 @@
use ArrayIterator;
use InvalidArgumentException;
-use Iterator;
+use Traversable;
use Wikibase\Client\Store\TitleFactory;
use Wikibase\DataModel\Entity\EntityId;
use Wikibase\DataModel\Entity\ItemId;
@@ -81,7 +81,7 @@
* @param string[] $aspects Which aspects to consider (if omitted, all
aspects are considered).
* Use the EntityUsage::XXX_USAGE constants to represent aspects.
*
- * @return Iterator<PageEntityUsages>
+ * @return Traversable of PageEntityUsages
* @throws UsageTrackerException
*/
public function getPagesUsing( array $entityIds, array $aspects =
array() ) {
diff --git a/client/includes/Usage/Sql/EntityUsageTable.php
b/client/includes/Usage/Sql/EntityUsageTable.php
index a9ccdd9..5f856ea 100644
--- a/client/includes/Usage/Sql/EntityUsageTable.php
+++ b/client/includes/Usage/Sql/EntityUsageTable.php
@@ -5,7 +5,7 @@
use ArrayIterator;
use DatabaseBase;
use InvalidArgumentException;
-use Iterator;
+use Traversable;
use Wikibase\Client\Usage\EntityUsage;
use Wikibase\Client\Usage\PageEntityUsages;
use Wikibase\DataModel\Entity\EntityId;
@@ -235,7 +235,7 @@
}
/**
- * @param array|Iterator $rows
+ * @param array|Traversable $rows
*
* @return EntityUsage[]
*/
@@ -325,7 +325,7 @@
* @param EntityId[] $entityIds
* @param string[] $aspects
*
- * @return Iterator<PageEntityUsages> An iterator over entity usages
grouped by page
+ * @return Traversable A traversable over PageEntityUsages grouped by
page
*/
public function getPagesUsing( array $entityIds, array $aspects =
array() ) {
if ( empty( $entityIds ) ) {
@@ -353,7 +353,7 @@
}
/**
- * @param array|Iterator $rows
+ * @param array|Traversable $rows
*
* @return PageEntityUsages[]
*/
@@ -428,7 +428,7 @@
/**
* Returns an array of values extracted from the $key property from
each object.
*
- * @param array|Iterator $objects
+ * @param array|Traversable $objects
* @param string $key
*
* @return array
diff --git a/client/includes/Usage/Sql/SqlUsageTracker.php
b/client/includes/Usage/Sql/SqlUsageTracker.php
index 34356dc..8434bda 100644
--- a/client/includes/Usage/Sql/SqlUsageTracker.php
+++ b/client/includes/Usage/Sql/SqlUsageTracker.php
@@ -7,7 +7,7 @@
use DBError;
use Exception;
use InvalidArgumentException;
-use Iterator;
+use Traversable;
use Wikibase\Client\Store\Sql\ConsistentReadConnectionManager;
use Wikibase\Client\Usage\EntityUsage;
use Wikibase\Client\Usage\UsageLookup;
@@ -243,7 +243,7 @@
* @param EntityId[] $entityIds
* @param string[] $aspects
*
- * @return Iterator<PageEntityUsages> An iterator over entity usages
grouped by page
+ * @return Traversable A traversable over PageEntityUsages grouped by
page
* @throws UsageTrackerException
*/
public function getPagesUsing( array $entityIds, array $aspects =
array() ) {
diff --git a/client/includes/Usage/UsageLookup.php
b/client/includes/Usage/UsageLookup.php
index 79a5c16..e98373e 100644
--- a/client/includes/Usage/UsageLookup.php
+++ b/client/includes/Usage/UsageLookup.php
@@ -2,7 +2,7 @@
namespace Wikibase\Client\Usage;
-use Iterator;
+use Traversable;
use Wikibase\DataModel\Entity\EntityId;
/**
@@ -32,7 +32,7 @@
* @param string[] $aspects Which aspects to consider (if omitted, all
aspects are considered).
* Use the EntityUsage::XXX_USAGE constants to represent aspects.
*
- * @return Iterator<PageEntityUsages> An iterator over PageEntityUsages
of pages using any of the given entities.
+ * @return Traversable A traversable over PageEntityUsages of pages
using any of the given entities.
* If $aspects is given, only usages of these aspects are
included in the result.
* @throws UsageTrackerException
*/
diff --git a/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php
b/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php
index a0d4b1d..5daeb3b 100644
--- a/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php
+++ b/client/tests/phpunit/includes/Changes/AffectedPagesFinderTest.php
@@ -4,6 +4,7 @@
use ArrayIterator;
use Title;
+use Traversable;
use Wikibase\Client\Changes\AffectedPagesFinder;
use Wikibase\Client\Store\TitleFactory;
use Wikibase\Client\Usage\EntityUsage;
@@ -522,7 +523,7 @@
}
/**
- * @param PageEntityUsages[]|Iterator<PageEntityUsages> $usagesPerPage
+ * @param PageEntityUsages[]|Traversable $usagesPerPage
*
* @return PageEntityUsages[]
*/
diff --git a/client/tests/phpunit/includes/Usage/SiteLinkUsageLookupTest.php
b/client/tests/phpunit/includes/Usage/SiteLinkUsageLookupTest.php
index 7ce322d..3a4c9a0 100644
--- a/client/tests/phpunit/includes/Usage/SiteLinkUsageLookupTest.php
+++ b/client/tests/phpunit/includes/Usage/SiteLinkUsageLookupTest.php
@@ -105,13 +105,13 @@
$lookup = $this->getUsageLookup( $links, $titleFactory );
$actual = $lookup->getPagesUsing( array( $q42, $p11 ) );
- $this->assertInstanceOf( 'Iterator', $actual );
+ $this->assertInstanceOf( 'Traversable', $actual );
$actual = iterator_to_array( $actual );
$this->assertEmpty( $actual );
$actual = $lookup->getPagesUsing( array( $q23 ), array(
EntityUsage::OTHER_USAGE ) );
- $this->assertInstanceOf( 'Iterator', $actual );
+ $this->assertInstanceOf( 'Traversable', $actual );
$actual = iterator_to_array( $actual );
$usages = $actual[0]->getUsages();
@@ -119,7 +119,7 @@
$this->assertEquals( $q23, $usage->getEntityId() );
$actual = $lookup->getPagesUsing( array( $q42, $q23, $p11 ) );
- $this->assertInstanceOf( 'Iterator', $actual );
+ $this->assertInstanceOf( 'Traversable', $actual );
$actual = iterator_to_array( $actual );
$this->assertCount( 1, $actual );
@@ -179,7 +179,7 @@
$usages = $lookup->getPagesUsing( array( $itemId ), array() );
- $this->assertInstanceOf( 'Iterator', $usages );
+ $this->assertInstanceOf( 'Traversable', $usages );
}
}
diff --git a/lib/includes/store/sql/TermSqlIndex.php
b/lib/includes/store/sql/TermSqlIndex.php
index e6cbed7..5a58416 100644
--- a/lib/includes/store/sql/TermSqlIndex.php
+++ b/lib/includes/store/sql/TermSqlIndex.php
@@ -5,8 +5,8 @@
use DatabaseBase;
use DBAccessBase;
use InvalidArgumentException;
-use Iterator;
use MWException;
+use Traversable;
use Wikibase\DataModel\Entity\EntityDocument;
use Wikibase\DataModel\Entity\EntityId;
use Wikibase\DataModel\Entity\Item;
@@ -591,12 +591,12 @@
}
/**
- * @param Iterator $rows
+ * @param Traversable $rows
* @param int $limit
*
- * @return Iterator
+ * @return Traversable
*/
- private function getRowsOrderedByWeight( Iterator $rows, $limit = 0 ) {
+ private function getRowsOrderedByWeight( Traversable $rows, $limit = 0
) {
$sortData = array();
$rowMap = array();
@@ -732,7 +732,7 @@
* Modifies the provided terms to use the field names expected by the
interface
* rather then the table field names. Also ensures the values are of
the correct type.
*
- * @param Iterator|array $obtainedTerms PHP fails for not having a
common iterator/array thing :<0
+ * @param array[]|Traversable $obtainedTerms
*
* @return TermIndexEntry[]
*/
diff --git a/repo/includes/Dumpers/DumpGenerator.php
b/repo/includes/Dumpers/DumpGenerator.php
index 5833022..ca62758 100644
--- a/repo/includes/Dumpers/DumpGenerator.php
+++ b/repo/includes/Dumpers/DumpGenerator.php
@@ -256,7 +256,7 @@
/**
* Generates a dump, writing to the file handle provided to the
constructor.
*
- * @param EntityIdPager $idPager an Iterator that returns EntityId
instances
+ * @param EntityIdPager $idPager a pager that returns EntityId instances
*/
public function generateDump( EntityIdPager $idPager ) {
$dumpCount = 0;
diff --git a/repo/includes/store/sql/EntityPerPageTable.php
b/repo/includes/store/sql/EntityPerPageTable.php
index aa7f969..cc1c6a7 100644
--- a/repo/includes/store/sql/EntityPerPageTable.php
+++ b/repo/includes/store/sql/EntityPerPageTable.php
@@ -346,6 +346,7 @@
* @param EntityId $after Only return entities with IDs greater than
this.
* @param mixed $redirects A XXX_REDIRECTS constant (default is
NO_REDIRECTS).
*
+ * @throws InvalidArgumentException
* @return EntityId[]
*/
public function listEntities( $entityType, $limit, EntityId $after =
null, $redirects = self::NO_REDIRECTS ) {
--
To view, visit https://gerrit.wikimedia.org/r/232693
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I5a2e3569ae0a8f5cfaa969b2e4842718ba0d73e1
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits