Skip to content

Commit

Permalink
Deprecate functionality to be removed (#1441)
Browse files Browse the repository at this point in the history
* Remove duplicate deprecation notices for query options

* PHPLIB-1533: Mark Collection::mapReduce as deprecated

* Update deprecation notice language
  • Loading branch information
alcaeus authored Sep 25, 2024
1 parent 355779b commit 1837a75
Show file tree
Hide file tree
Showing 7 changed files with 16 additions and 35 deletions.
6 changes: 6 additions & 0 deletions src/Collection.php
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,11 @@
use function array_key_exists;
use function current;
use function is_array;
use function sprintf;
use function strlen;
use function trigger_error;

use const E_USER_DEPRECATED;

class Collection
{
Expand Down Expand Up @@ -952,6 +956,8 @@ public function listSearchIndexes(array $options = []): Iterator
*/
public function mapReduce(JavascriptInterface $map, JavascriptInterface $reduce, string|array|object $out, array $options = [])
{
@trigger_error(sprintf('The %s method is deprecated and will be removed in a version 2.0.', __METHOD__), E_USER_DEPRECATED);

$hasOutputCollection = ! is_mapreduce_output_inline($out);

// Check if the out option is inline because we will want to coerce a primary read preference if not
Expand Down
4 changes: 2 additions & 2 deletions src/Model/IndexInfo.php
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public function getName()
*/
public function getNamespace()
{
@trigger_error('MongoDB 4.4 drops support for the namespace in indexes, the method "IndexInfo::getNamespace()" will be removed in a future release', E_USER_DEPRECATED);
@trigger_error('MongoDB 4.4 drops support for the namespace in indexes, the method "IndexInfo::getNamespace()" will be removed in version 2.0', E_USER_DEPRECATED);

return (string) $this->info['ns'];
}
Expand Down Expand Up @@ -132,7 +132,7 @@ public function is2dSphere()
*/
public function isGeoHaystack()
{
@trigger_error('MongoDB 5.0 removes support for "geoHaystack" indexes, the method "IndexInfo::isGeoHaystack()" will be removed in a future release', E_USER_DEPRECATED);
@trigger_error('MongoDB 5.0 removes support for "geoHaystack" indexes, the method "IndexInfo::isGeoHaystack()" will be removed in version 2.0', E_USER_DEPRECATED);

return array_search('geoHaystack', $this->getKey(), true) !== false;
}
Expand Down
2 changes: 1 addition & 1 deletion src/Operation/CreateCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ public function __construct(private string $databaseName, private string $collec
}

if (isset($this->options['autoIndexId'])) {
trigger_error('The "autoIndexId" option is deprecated and will be removed in a future release', E_USER_DEPRECATED);
trigger_error('The "autoIndexId" option is deprecated and will be removed in version 2.0', E_USER_DEPRECATED);
}

if (isset($this->options['pipeline']) && ! is_pipeline($this->options['pipeline'], true /* allowEmpty */)) {
Expand Down
11 changes: 0 additions & 11 deletions src/Operation/Find.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,6 @@
use function is_string;
use function MongoDB\document_to_array;
use function MongoDB\is_document;
use function trigger_error;

use const E_USER_DEPRECATED;

/**
* Operation for the find command.
Expand Down Expand Up @@ -285,14 +282,6 @@ public function __construct(private string $databaseName, private string $collec
unset($this->options['readConcern']);
}

if (isset($this->options['snapshot'])) {
trigger_error('The "snapshot" option is deprecated and will be removed in a future release', E_USER_DEPRECATED);
}

if (isset($this->options['maxScan'])) {
trigger_error('The "maxScan" option is deprecated and will be removed in a future release', E_USER_DEPRECATED);
}

if (isset($this->options['codec']) && isset($this->options['typeMap'])) {
throw InvalidArgumentException::cannotCombineCodecAndTypeMap();
}
Expand Down
4 changes: 3 additions & 1 deletion tests/Collection/CollectionFunctionalTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,9 @@ public function testMapReduce(): void
$reduce = new Javascript('function(key, values) { return Array.sum(values); }');
$out = ['inline' => 1];

$result = $this->collection->mapReduce($map, $reduce, $out);
$result = $this->assertDeprecated(
fn () => $this->collection->mapReduce($map, $reduce, $out),
);

$this->assertInstanceOf(MapReduceResult::class, $result);
$expected = [
Expand Down
18 changes: 0 additions & 18 deletions tests/Operation/FindTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,24 +55,6 @@ public static function provideInvalidConstructorOptions()
]);
}

public function testSnapshotOptionIsDeprecated(): void
{
$this->assertDeprecated(function (): void {
new Find($this->getDatabaseName(), $this->getCollectionName(), [], ['snapshot' => true]);
});

$this->assertDeprecated(function (): void {
new Find($this->getDatabaseName(), $this->getCollectionName(), [], ['snapshot' => false]);
});
}

public function testMaxScanOptionIsDeprecated(): void
{
$this->assertDeprecated(function (): void {
new Find($this->getDatabaseName(), $this->getCollectionName(), [], ['maxScan' => 1]);
});
}

/** @dataProvider provideInvalidConstructorCursorTypeOptions */
public function testConstructorCursorTypeOption($cursorType): void
{
Expand Down
6 changes: 4 additions & 2 deletions tests/TestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ final public static function provideInvalidStringValues(): array
return self::wrapValuesForDataProvider(self::getInvalidStringValues());
}

protected function assertDeprecated(callable $execution): void
protected function assertDeprecated(callable $execution)
{
$errors = [];

Expand All @@ -170,12 +170,14 @@ protected function assertDeprecated(callable $execution): void
}, E_USER_DEPRECATED | E_DEPRECATED);

try {
call_user_func($execution);
$result = call_user_func($execution);
} finally {
restore_error_handler();
}

$this->assertCount(1, $errors);

return $result;
}

protected static function createOptionDataProvider(array $options): array
Expand Down

0 comments on commit 1837a75

Please sign in to comment.