ZSetRangeByScore.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. <?php
  2. namespace Predis\Commands;
  3. class ZSetRangeByScore extends ZSetRange {
  4. public function getId() {
  5. return 'ZRANGEBYSCORE';
  6. }
  7. protected function prepareOptions($options) {
  8. $opts = array_change_key_case($options, CASE_UPPER);
  9. $finalizedOpts = array();
  10. if (isset($opts['LIMIT']) && is_array($opts['LIMIT'])) {
  11. $limit = array_change_key_case($opts['LIMIT'], CASE_UPPER);
  12. $finalizedOpts[] = 'LIMIT';
  13. $finalizedOpts[] = isset($limit['OFFSET']) ? $limit['OFFSET'] : $limit[0];
  14. $finalizedOpts[] = isset($limit['COUNT']) ? $limit['COUNT'] : $limit[1];
  15. }
  16. return array_merge($finalizedOpts, parent::prepareOptions($options));
  17. }
  18. protected function withScores() {
  19. $arguments = $this->getArguments();
  20. for ($i = 3; $i < count($arguments); $i++) {
  21. switch (strtoupper($arguments[$i])) {
  22. case 'WITHSCORES':
  23. return true;
  24. case 'LIMIT':
  25. $i += 2;
  26. break;
  27. }
  28. }
  29. return false;
  30. }
  31. }