1<?php 2 3/* 4 * This file is part of the Assetic package, an OpenSky project. 5 * 6 * (c) 2010-2014 OpenSky Project Inc 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12namespace Assetic\Asset; 13 14/** 15 * An asset collection. 16 * 17 * @author Kris Wallsmith <kris.wallsmith@gmail.com> 18 */ 19interface AssetCollectionInterface extends AssetInterface, \Traversable 20{ 21 /** 22 * Returns all child assets. 23 * 24 * @return array An array of AssetInterface objects 25 */ 26 public function all(); 27 28 /** 29 * Adds an asset to the current collection. 30 * 31 * @param AssetInterface $asset An asset 32 */ 33 public function add(AssetInterface $asset); 34 35 /** 36 * Removes a leaf. 37 * 38 * @param AssetInterface $leaf The leaf to remove 39 * @param Boolean $graceful Whether the failure should return false or throw an exception 40 * 41 * @return Boolean Whether the asset has been found 42 * 43 * @throws \InvalidArgumentException If the asset cannot be found 44 */ 45 public function removeLeaf(AssetInterface $leaf, $graceful = false); 46 47 /** 48 * Replaces an existing leaf with a new one. 49 * 50 * @param AssetInterface $needle The current asset to replace 51 * @param AssetInterface $replacement The new asset 52 * @param Boolean $graceful Whether the failure should return false or throw an exception 53 * 54 * @return Boolean Whether the asset has been found 55 * 56 * @throws \InvalidArgumentException If the asset cannot be found 57 */ 58 public function replaceLeaf(AssetInterface $needle, AssetInterface $replacement, $graceful = false); 59} 60