Differences Between: [Versions 310 and 403] [Versions 311 and 403] [Versions 39 and 403] [Versions 400 and 403] [Versions 401 and 403]
1 <?php 2 3 if (!class_exists('Google_Client')) { 4 require_once dirname(__FILE__) . '/autoload.php'; 5 } 6 7 /** 8 * Extension to the regular Google_Model that automatically 9 * exposes the items array for iteration, so you can just 10 * iterate over the object rather than a reference inside. 11 */ 12 #[AllowDynamicProperties] 13 class Google_Collection extends Google_Model implements Iterator, Countable 14 { 15 protected $collection_key = 'items'; 16 17 public function rewind(): void 18 { 19 if (isset($this->modelData[$this->collection_key]) 20 && is_array($this->modelData[$this->collection_key])) { 21 reset($this->modelData[$this->collection_key]); 22 } 23 } 24 25 #[\ReturnTypeWillChange] 26 public function current() 27 { 28 $this->coerceType($this->key()); 29 if (is_array($this->modelData[$this->collection_key])) { 30 return current($this->modelData[$this->collection_key]); 31 } 32 return null; 33 } 34 35 #[\ReturnTypeWillChange] 36 public function key() 37 { 38 if (isset($this->modelData[$this->collection_key]) 39 && is_array($this->modelData[$this->collection_key])) { 40 return key($this->modelData[$this->collection_key]); 41 } 42 return null; 43 } 44 45 public function next(): void 46 { 47 next($this->modelData[$this->collection_key]); 48 } 49 50 public function valid(): bool 51 { 52 $key = $this->key(); 53 return $key !== null && $key !== false; 54 } 55 56 public function count(): int 57 { 58 if (!isset($this->modelData[$this->collection_key])) { 59 return 0; 60 } 61 return count($this->modelData[$this->collection_key]); 62 } 63 64 public function offsetExists($offset): bool 65 { 66 if (!is_numeric($offset)) { 67 return parent::offsetExists($offset); 68 } 69 return isset($this->modelData[$this->collection_key][$offset]); 70 } 71 72 #[\ReturnTypeWillChange] 73 public function offsetGet($offset) 74 { 75 if (!is_numeric($offset)) { 76 return parent::offsetGet($offset); 77 } 78 $this->coerceType($offset); 79 return $this->modelData[$this->collection_key][$offset]; 80 } 81 82 public function offsetSet($offset, $value): void 83 { 84 if (!is_numeric($offset)) { 85 parent::offsetSet($offset, $value); 86 return; 87 } 88 $this->modelData[$this->collection_key][$offset] = $value; 89 } 90 91 public function offsetUnset($offset): void 92 { 93 if (!is_numeric($offset)) { 94 parent::offsetUnset($offset); 95 return; 96 } 97 unset($this->modelData[$this->collection_key][$offset]); 98 } 99 100 private function coerceType($offset) 101 { 102 $typeKey = $this->keyType($this->collection_key); 103 if (isset($this->$typeKey) && !is_object($this->modelData[$this->collection_key][$offset])) { 104 $type = $this->$typeKey; 105 $this->modelData[$this->collection_key][$offset] = 106 new $type($this->modelData[$this->collection_key][$offset]); 107 } 108 } 109 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body