# Source of file FinderFacade.php

Size: 3,364 Bytes - Last Modified: 2015-06-04T08:11:58+00:00

## ../src/FinderFacade.php

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128

    <?php

    /*

     * This file is part of the Comparator package.

     *

     * (c) Sebastian Bergmann <sebastian@phpunit.de>

     *

     * For the full copyright and license information, please view the LICENSE

     * file that was distributed with this source code.

     */

    namespace SebastianBergmann\FinderFacade;

    use Symfony\Component\Finder\Finder;

    /**

     * Convenience wrapper for Symfony's Finder component.

     *

     * @author    Sebastian Bergmann <sebastian@phpunit.de>

     * @copyright Sebastian Bergmann <sebastian@phpunit.de>

     * @license   http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License

     * @link      http://github.com/sebastianbergmann/finder-facade/tree

     * @since     Class available since Release 1.0.0

     */

    class FinderFacade

    {

        /**

         * @var array

         */

        protected $items = array();

        /**

         * @var array

         */

        protected $excludes = array();

        /**

         * @var array

         */

        protected $names = array();

        /**

         * @var array

         */

        protected $notNames = array();

        /**

         * @var array

         */

        protected $regularExpressionsExcludes = array();

        /**

         * @param array $items

         * @param array $excludes

         * @param array $names

         * @param array $notNames

         * @param array $regularExpressionsExcludes

         */

        public function __construct(array $items = array(), array $excludes = array(), array $names = array(), array $notNames = array(), $regularExpressionsExcludes = array())

        {

            $this->items                      = $items;

            $this->excludes                   = $excludes;

            $this->names                      = $names;

            $this->notNames                   = $notNames;

            $this->regularExpressionsExcludes = $regularExpressionsExcludes;

        }

        /**

         * @return array

         */

        public function findFiles()

        {

            $files   = array();

            $finder  = new Finder;

            $iterate = false;

            $finder->ignoreUnreadableDirs();

            foreach ($this->items as $item) {

                if (!is_file($item)) {

                    $finder->in($item);

                    $iterate = true;

                } else {

                    $files[] = realpath($item);

                }

            }

            foreach ($this->excludes as $exclude) {

                $finder->exclude($exclude);

            }

            foreach ($this->names as $name) {

                $finder->name($name);

            }

            foreach ($this->notNames as $notName) {

                $finder->notName($notName);

            }

            foreach ($this->regularExpressionsExcludes as $regularExpressionExclude) {

                $finder->notPath($regularExpressionExclude);

            }

            if ($iterate) {

                foreach ($finder as $file) {

                    $files[] = $file->getRealpath();

                }

            }

            return $files;

        }

        /**

         * @param string $file

         */

        public function loadConfiguration($file)

        {

            $configuration = new Configuration($file);

            $configuration = $configuration->parse();

            $this->items                      = $configuration['items'];

            $this->excludes                   = $configuration['excludes'];

            $this->names                      = $configuration['names'];

            $this->notNames                   = $configuration['notNames'];

            $this->regularExpressionsExcludes = $configuration['regularExpressionExcludes'];

        }

    }