public static function retrieveRequirement($name, $options = null)
{
// Requirement is already initialised return it
if (isset(static::$_requirements[$name])) {
// If requirement does not have options, returned cached instance
if (!$options) {
return static::$_requirements[$name];
}
$requirementClass = get_class(static::$_requirements[$name]);
return new $requirementClass($options);
}
// Attempt to create requirement
if (!($requirement = static::createRequirement($name, $options))) {
require_once 'Shanty/Mongo/Exception.php';
throw new Shanty_Mongo_Exception("No requirement exists for '{$name}'");
}
// Requirement found. Store it for later use
if (!is_null($options)) {
static::storeRequirement($name, $requirement);
}
return $requirement;
}