Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mongo-php-library
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sinan
mongo-php-library
Commits
79d07ff7
Commit
79d07ff7
authored
Apr 23, 2015
by
Jeremy Mikola
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PHPLIB-46: Index info and corresponding iterator class
parent
48b3de1c
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
216 additions
and
0 deletions
+216
-0
IndexInfo.php
src/Model/IndexInfo.php
+160
-0
IndexInfoIterator.php
src/Model/IndexInfoIterator.php
+23
-0
IndexInfoIteratorIterator.php
src/Model/IndexInfoIteratorIterator.php
+33
-0
No files found.
src/Model/IndexInfo.php
0 → 100644
View file @
79d07ff7
<?php
namespace
MongoDB\Model
;
use
ArrayAccess
;
use
BadMethodCallException
;
/**
* Index information model class.
*
* This class models the index information returned by the listIndexes command
* or, for legacy servers, queries on the "system.indexes" collection. It
* provides methods to access common index options, and allows access to other
* options through the ArrayAccess interface (write methods are not supported).
* For information on keys and index options, see the referenced
* db.collection.createIndex() documentation.
*
* @api
* @see MongoDB\Collection::listIndexes()
* @see https://github.com/mongodb/specifications/blob/master/source/enumerate-indexes.rst
* @see http://docs.mongodb.org/manual/reference/method/db.collection.createIndex/
*/
class
IndexInfo
implements
ArrayAccess
{
private
$info
;
/**
* Constructor.
*
* @param array $info Index info
*/
public
function
__construct
(
array
$info
)
{
$this
->
info
=
$info
;
}
/**
* Return the index key(s).
*
* @return array
*/
public
function
getKeys
()
{
return
(
array
)
$this
->
info
[
'key'
];
}
/**
* Return the index name.
*
* @return string
*/
public
function
getName
()
{
return
(
string
)
$this
->
info
[
'name'
];
}
/**
* Return the index namespace (e.g. "db.collection").
*
* @return string
*/
public
function
getNamespace
()
{
return
(
string
)
$this
->
info
[
'ns'
];
}
/**
* Return the index version.
*
* @return integer
*/
public
function
getVersion
()
{
return
(
integer
)
$this
->
info
[
'v'
];
}
/**
* Return whether this is a sparse index.
*
* @see http://docs.mongodb.org/manual/core/index-sparse/
* @return boolean
*/
public
function
isSparse
()
{
return
!
empty
(
$this
->
info
[
'sparse'
]);
}
/**
* Return whether this is a TTL index.
*
* @see http://docs.mongodb.org/manual/core/index-ttl/
* @return boolean
*/
public
function
isTtl
()
{
return
array_key_exists
(
'expireAfterSeconds'
,
$this
->
info
);
}
/**
* Return whether this is a unique index.
*
* @see http://docs.mongodb.org/manual/core/index-unique/
* @return boolean
*/
public
function
isUnique
()
{
return
!
empty
(
$this
->
info
[
'unique'
]);
}
/**
* Check whether a field exists in the index information.
*
* @see http://php.net/arrayaccess.offsetexists
* @param mixed $key
* @return boolean
*/
public
function
offsetExists
(
$key
)
{
return
array_key_exists
(
$key
,
$this
->
info
);
}
/**
* Return the field's value from the index information.
*
* This method satisfies the Enumerating Indexes specification's requirement
* that index fields be made accessible under their original names. It may
* also be used to access fields that do not have a helper method.
*
* @see http://php.net/arrayaccess.offsetget
* @see https://github.com/mongodb/specifications/blob/master/source/enumerate-indexes.rst#getting-full-index-information
* @param mixed $key
* @return mixed
*/
public
function
offsetGet
(
$key
)
{
return
$this
->
data
[
$key
];
}
/**
* Not supported.
*
* @see http://php.net/arrayaccess.offsetset
* @throws BadMethodCallException IndexInfo is read-only
*/
public
function
offsetSet
(
$key
,
$value
)
{
throw
new
BadMethodCallException
(
'IndexInfo is read-only'
);
}
/**
* Not supported.
*
* @see http://php.net/arrayaccess.offsetunset
* @throws BadMethodCallException IndexInfo is read-only
*/
public
function
offsetUnset
(
$key
)
{
throw
new
BadMethodCallException
(
'IndexInfo is read-only'
);
}
}
src/Model/IndexInfoIterator.php
0 → 100644
View file @
79d07ff7
<?php
namespace
MongoDB\Model
;
use
Iterator
;
/**
* IndexInfoIterator interface.
*
* This iterator is used for enumerating indexes in a collection.
*
* @api
* @see MongoDB\Collection::listIndexes()
*/
interface
IndexInfoIterator
extends
Iterator
{
/**
* Return the current element as a IndexInfo instance.
*
* @return IndexInfo
*/
public
function
current
();
}
src/Model/IndexInfoIteratorIterator.php
0 → 100644
View file @
79d07ff7
<?php
namespace
MongoDB\Model
;
use
IteratorIterator
;
/**
* IndexInfoIterator for both listIndexes command and legacy query results.
*
* This common iterator may be used to wrap a Cursor returned by both the
* listIndexes command and, for legacy servers, queries on the "system.indexes"
* collection.
*
* @internal
* @see MongoDB\Collection::listIndexes()
* @see https://github.com/mongodb/specifications/blob/master/source/enumerate-indexes.rst
* @see http://docs.mongodb.org/manual/reference/command/listIndexes/
* @see http://docs.mongodb.org/manual/reference/system-collections/
*/
class
IndexInfoIteratorIterator
extends
IteratorIterator
implements
IndexInfoIterator
{
/**
* Return the current element as an IndexInfo instance.
*
* @see IndexInfoIterator::current()
* @see http://php.net/iterator.current
* @return IndexInfo
*/
public
function
current
()
{
return
new
IndexInfo
(
parent
::
current
());
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment