| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | 
							- <?php
 
- namespace app\utils;
 
- class CollectionUtils
 
- {
 
-     protected $_members = [];
 
-     protected $_itemHasType;    //标志是否指定元素的类型
 
-     protected $_itemType;       //集合中的元素类型
 
-     public function __construct($items = [], $itemHasType = false, $itemType = NULL)
 
-     {
 
-         $this->_itemHasType = $itemHasType;
 
-         $this->_itemType = $itemType;
 
-         $tmp = $this->getArrayableItems($items);
 
-         if ($this->_itemHasType) {
 
-             foreach ($tmp as $val) {
 
-                 if ($val instanceof $this->_itemType) {
 
-                     $this->_members[] = $val;
 
-                 }
 
-             }
 
-         } else {
 
-             $this->_members = $tmp;
 
-         }
 
-     }
 
-     public function addItem($obj)
 
-     {
 
-         if ($this->_itemHasType) {
 
-             if (!($obj instanceof $this->_itemType))
 
-                 throw new \Exception("The added obj is not the type of \"$this->_itemType\"!");
 
-         }
 
-         if ($this->exists($obj)) {
 
-             throw new \Exception("Obj is already exists!");
 
-         } else {
 
-             $this->_members[] = $obj;
 
-         }
 
-     }
 
-     public function removeItem($obj)
 
-     {
 
-         if (false != ($key = array_search($obj, $this->_members))) {
 
-             unset($this->_members[$key]);
 
-         } else {
 
-             throw new \Exception("Obj is not exists!");
 
-         }
 
-     }
 
-     public function all()
 
-     {
 
-         return $this->_members;
 
-     }
 
-     public function length()
 
-     {
 
-         return sizeof($this->_members);
 
-     }
 
-     public function exists($obj)
 
-     {
 
-         return in_array($obj, $this->_members);
 
-     }
 
-     protected function getArrayableItems($items)
 
-     {
 
-         if (is_array($items)) {
 
-             return array_values(array_unique($items, SORT_REGULAR));
 
-         } elseif ($items instanceof self) {
 
-             return $items->all();
 
-         }
 
-         return (array) $items;
 
-     }
 
- }
 
 
  |