Skip to content

Commit

Permalink
Merge pull request #10016 from alcaeus/mongodb-bson-generics
Browse files Browse the repository at this point in the history
Add generic stubs for MongoDB BSON classes
  • Loading branch information
orklah committed Jul 13, 2023
2 parents db9d971 + bea3090 commit 564c6de
Showing 1 changed file with 231 additions and 39 deletions.
270 changes: 231 additions & 39 deletions stubs/extensions/mongodb.phpstub
@@ -1,59 +1,251 @@
<?php

namespace MongoDB\Driver;

use Iterator;
use Traversable;

/**
* @template-covariant TKey
* @template-covariant TValue
*
* @template-extends Traversable<TKey, TValue>
*/
interface CursorInterface extends Traversable
namespace MongoDB\BSON
{
/**
* @return array<TValue>
*/
public function toArray();
}
use IteratorAggregate;
use Serializable;

/**
* @template-covariant TValue of array|object
*
* @template-implements Iterator<int, TValue>
* @template-implements CursorInterface<int, TValue>
*/
final class Cursor implements CursorInterface, Iterator
{
/**
* @return TValue
* @template TValue
* @template-implements IteratorAggregate<string, TValue>
*/
public function current() {}
final class Document implements IteratorAggregate, Serializable
{
private function __construct()
{
}

/**
* @return void
*/
public function next() {}
final static public function fromBSON(string $bson): Document
{
}

final static public function fromJSON(string $json): Document
{
}

/** @param array|object $value */
final static public function fromPHP($value): Document
{
}

/** @return TValue */
final public function get(string $key)
{
}

/** @return Iterator<string, TValue> */
final public function getIterator(): Iterator
{
}

final public function has(string $key): bool
{
}

/** @return array|object */
final public function toPHP(?array $typeMap = null)
{
}

final public function toCanonicalExtendedJSON(): string
{
}

final public function toRelaxedExtendedJSON(): string
{
}

final public function __toString(): string
{
}

final public static function __set_state(array $properties): Document
{
}

final public function serialize(): string
{
}

/** @param string $serialized */
final public function unserialize($serialized): void
{
}

final public function __unserialize(array $data): void
{
}

final public function __serialize(): array
{
}
}

/**
* @return int
* @psalm-template TKey of int|string
* @psalm-template TValue
* $psalm-implements \Iterator<TKey, TValue>
*/
public function key() {}
final class Iterator implements \Iterator
{
final private function __construct()
{
}

/** @return TValue */
final public function current()
{
}

/** @return TKey */
final public function key()
{
}

final public function next(): void
{
}

final public function rewind(): void
{
}

final public function valid(): bool
{
}

final public function __wakeup(): void
{
}
}

/**
* @return bool
* @template TValue
* @template-implements IteratorAggregate<int, TValue>
*/
public function valid() {}
final class PackedArray implements IteratorAggregate, Serializable
{
private function __construct()
{
}

final static public function fromPHP(array $value): PackedArray
{
}

/** @return TValue */
final public function get(int $index)
{
}

/** @return Iterator<int, TValue> */
final public function getIterator(): Iterator
{
}

final public function has(int $index): bool
{
}

/** @return array|object */
final public function toPHP(?array $typeMap = null)
{
}

final public function __toString(): string
{
}

final public static function __set_state(array $properties): PackedArray
{
}

final public function serialize(): string
{
}

/** @param string $serialized */
final public function unserialize($serialized): void
{
}

final public function __unserialize(array $data): void
{
}

final public function __serialize(): array
{
}
}
}

namespace MongoDB\Driver
{
use Iterator;
use Traversable;

/**
* @return void
* @template-covariant TKey
* @template-covariant TValue
*
* @template-extends Traversable<TKey, TValue>
*/
public function rewind() {}
interface CursorInterface extends Traversable
{
/**
* @return array<TValue>
*/
public function toArray();
}

/**
* @return array<TValue>
* @template-covariant TValue of array|object
*
* @template-implements Iterator<int, TValue>
* @template-implements CursorInterface<int, TValue>
*/
public function toArray() {}
final class Cursor implements CursorInterface, Iterator
{
/**
* @return TValue
*/
public function current()
{
}

/**
* @return void
*/
public function next()
{
}

/**
* @return int
*/
public function key()
{
}

/**
* @return bool
*/
public function valid()
{
}

/**
* @return void
*/
public function rewind()
{
}

/**
* @return array<TValue>
*/
public function toArray()
{
}
}
}

0 comments on commit 564c6de

Please sign in to comment.