[ Index ] |
PHP Cross Reference of phpBB-3.1.12-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <fabien@symfony.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12 namespace Symfony\Component\Routing\Loader; 13 14 use Symfony\Component\Routing\RouteCollection; 15 use Symfony\Component\Config\Resource\DirectoryResource; 16 17 /** 18 * AnnotationDirectoryLoader loads routing information from annotations set 19 * on PHP classes and methods. 20 * 21 * @author Fabien Potencier <fabien@symfony.com> 22 */ 23 class AnnotationDirectoryLoader extends AnnotationFileLoader 24 { 25 /** 26 * Loads from annotations from a directory. 27 * 28 * @param string $path A directory path 29 * @param string|null $type The resource type 30 * 31 * @return RouteCollection A RouteCollection instance 32 * 33 * @throws \InvalidArgumentException When the directory does not exist or its routes cannot be parsed 34 */ 35 public function load($path, $type = null) 36 { 37 $dir = $this->locator->locate($path); 38 39 $collection = new RouteCollection(); 40 $collection->addResource(new DirectoryResource($dir, '/\.php$/')); 41 $files = iterator_to_array(new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir), \RecursiveIteratorIterator::LEAVES_ONLY)); 42 usort($files, function (\SplFileInfo $a, \SplFileInfo $b) { 43 return (string) $a > (string) $b ? 1 : -1; 44 }); 45 46 foreach ($files as $file) { 47 if (!$file->isFile() || '.php' !== substr($file->getFilename(), -4)) { 48 continue; 49 } 50 51 if ($class = $this->findClass($file)) { 52 $refl = new \ReflectionClass($class); 53 if ($refl->isAbstract()) { 54 continue; 55 } 56 57 $collection->addCollection($this->loader->load($class, $type)); 58 } 59 } 60 61 return $collection; 62 } 63 64 /** 65 * {@inheritdoc} 66 */ 67 public function supports($resource, $type = null) 68 { 69 if (!is_string($resource)) { 70 return false; 71 } 72 73 try { 74 $path = $this->locator->locate($resource); 75 } catch (\Exception $e) { 76 return false; 77 } 78 79 return is_dir($path) && (!$type || 'annotation' === $type); 80 } 81 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Jan 11 00:25:41 2018 | Cross-referenced by PHPXref 0.7.1 |