예제 #1
0
 /**
  * findPaths
  *
  * @param string $layout
  *
  * @return  \SplFileInfo
  */
 public function findPaths($layout = null)
 {
     $layout = $layout ?: $this->getLayout();
     if (is_file($this->getPath() . '/' . $layout)) {
         return new \SplFileInfo(realpath($this->getPath() . '/' . $layout));
     }
     $layout = explode('/', $layout);
     $name = array_pop($layout);
     $layout = implode('/', $layout);
     if (is_dir($this->getPath() . '/' . $layout)) {
         $files = Filesystem::find($this->path . '/' . $layout, $name);
         /** @var \SplFileInfo $file */
         foreach ($files as $file) {
             if (File::stripExtension($file->getFilename()) == $name) {
                 return $file;
             }
         }
     }
     return null;
 }
 /**
  * Find all files from paths.
  *
  * @param  mixed   $condition      Finding condition, that can be a string, a regex or a callback function.
  *                                 Callback example:
  *                                 <code>
  *                                 function($current, $key, $iterator)
  *                                 {
  *                                 return @preg_match('^Foo', $current->getFilename())  && ! $iterator->isDot();
  *                                 }
  *                                 </code>
  * @param  boolean $recursive      True to resursive.
  *
  * @return  \AppendIterator  Finded files or paths iterator.
  *
  * @since  2.0
  */
 public function find($condition, $recursive = false)
 {
     return $this->appendIterator(function ($path) use($condition, $recursive) {
         return Filesystem::find((string) $path, $condition, $recursive);
     });
 }
예제 #3
0
 /**
  * Find all files which matches condition.
  *
  * @param  mixed   $condition       Finding condition, that can be a string, a regex or a callback function.
  *                                  Callback example:
  *                                  <code>
  *                                  function($current, $key, $iterator)
  *                                  {
  *                                  return @preg_match('^Foo', $current->getFilename())  && ! $iterator->isDot();
  *                                  }
  *                                  </code>
  * @param  boolean $recursive       True to resursive.
  *
  * @return  \CallbackFilterIterator  Finded files or paths iterator.
  *
  * @since  2.0
  */
 public function find($condition, $recursive = false)
 {
     return Filesystem::find((string) $this, $condition, $recursive);
 }
예제 #4
0
 /**
  * Method to test findByCallback().
  *
  * @return void
  *
  * @covers Windwalker\Filesystem\Filesystem::findByCallback
  */
 public function testFindByCallback()
 {
     $condition = function ($current, $key, $iterator) {
         return pathinfo($current->getBasename(), PATHINFO_EXTENSION) == 'html';
     };
     $files = Filesystem::find(static::$dest, $condition, true, true);
     $expect3 = array(__DIR__ . '/dest/folder2/file2.html');
     $this->assertEquals(FilesystemTestHelper::cleanPaths($expect3), FilesystemTestHelper::cleanPaths($files));
 }