Get available options
public static getAvailableOptions ( ) : array | ||
리턴 | array |
/** * Add multiple connections at once using arrays of options * * @param array $connectionOptions */ public function addConnections($connectionOptions) { if ($connectionOptions instanceof Zend_Config) { $connectionOptions = $connectionOptions->toArray(); } $masters = array(); $masterStackOptions = array(); $slaves = array(); $slaveStackOptions = array(); $group = $this; $addConnections = function (Shanty_Mongo_Connection_Stack $stack, array $connections) use($group) { foreach ($connections as $connectionData) { $options = array_intersect_key($connectionData, array_flip(Shanty_Mongo_Connection::getAvailableOptions())); $connection = new Shanty_Mongo_Connection($group->formatConnectionString($connectionData), $options); if (array_key_exists('weight', $connectionData)) { $weight = (int) $connectionData['weight']; } else { $weight = 1; } $stack->addNode($connection, $weight); } }; // Lets add our masters if (array_key_exists('master', $connectionOptions)) { $masters[] = $connectionOptions['master']; } elseif (array_key_exists('masters', $connectionOptions)) { $connectionKeys = array_filter(array_keys($connectionOptions['masters']), 'is_numeric'); $masters = array_intersect_key($connectionOptions['masters'], array_flip($connectionKeys)); // only connections $masterStackOptions = array_diff_key($connectionOptions['masters'], array_flip($connectionKeys)); // only options } else { $masters[] = $connectionOptions; } // one server $addConnections($this->getMasters(), $masters); // Add master connections $this->getMasters()->setOptions($masterStackOptions); // Set master stack options // Lets add our slaves if (array_key_exists('slave', $connectionOptions)) { $slaves[] = $connectionOptions['slave']; } elseif (array_key_exists('slaves', $connectionOptions)) { $connectionKeys = array_filter(array_keys($connectionOptions['slaves']), 'is_numeric'); $slaves = array_intersect_key($connectionOptions['slaves'], array_flip($connectionKeys)); // only connections $slaveStackOptions = array_diff_key($connectionOptions['slaves'], array_flip($connectionKeys)); // only options } $addConnections($this->getSlaves(), $slaves); // Add slave connections $this->getSlaves()->setOptions($slaveStackOptions); // Set slave stack options }
public function testGetAvailableOptions() { $options = array('persist', 'timeout', 'replicaSet'); $this->assertEquals($options, Shanty_Mongo_Connection::getAvailableOptions()); }