* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Alchemy\Zippy\Archive; use Alchemy\Zippy\Adapter\Resource\ResourceInterface; use Alchemy\Zippy\Exception\InvalidArgumentException; use Alchemy\Zippy\Exception\RuntimeException; interface MemberInterface { /** * Gets the location of an archive member * * @return string */ public function getLocation(); /** * Tells whether the member is a directory or not * * @return bool */ public function isDir(); /** * Returns the last modified date of the member * * @return \DateTime */ public function getLastModifiedDate(); /** * Returns the (uncompressed) size of the member * * If the size is unknown, returns -1 * * @return integer */ public function getSize(); /** * Extract the member from its archive * * Be careful using this method within a loop * This will execute one extraction process for each file * Prefer the use of ArchiveInterface::extractMembers in that use case * * @param string|null $to The path where to extract the member, if no path is not provided the member is extracted in the same directory of its archive * @param bool $overwrite Whether to overwrite destination file if it already exists. Defaults to false * * @return \SplFileInfo The extracted file * * @throws RuntimeException In case of failure * @throws InvalidArgumentException In case no members could be removed or provide extract target directory is not valid */ public function extract($to = null, $overwrite = false); /** * Get resource. * * @return ResourceInterface * */ public function getResource(); /** * @inheritdoc */ public function __toString(); }