Neos\Flow\Core\Migrations\Tools::getPackagesData PHP Метод

getPackagesData() публичный статический Метод

The data for each entry will be an array with the key, full path to the package (index 'path') and a category (the packages subfolder, index 'category'). The array is indexed by package key.
public static getPackagesData ( string $packagesPath ) : array
$packagesPath string
Результат array
    public static function getPackagesData($packagesPath)
    {
        $packagesData = array();
        $packagesDirectoryIterator = new \DirectoryIterator($packagesPath);
        foreach ($packagesDirectoryIterator as $categoryFileInfo) {
            $category = $categoryFileInfo->getFilename();
            if (!$categoryFileInfo->isDir() || $category[0] === '.' || $category === 'Libraries') {
                continue;
            }
            $categoryDirectoryIterator = new \DirectoryIterator($categoryFileInfo->getPathname());
            foreach ($categoryDirectoryIterator as $packageFileInfo) {
                $packageKey = $packageFileInfo->getFilename();
                if (!$packageFileInfo->isDir() || $packageKey[0] === '.') {
                    continue;
                }
                $meta = self::readPackageMetaData(Files::concatenatePaths(array($packageFileInfo->getPathname(), 'Meta/Package.xml')));
                $composerManifest = self::readComposerManifest(Files::concatenatePaths(array($packageFileInfo->getPathname(), 'composer.json')));
                $packagesData[$packageKey] = array('packageKey' => $packageKey, 'category' => $category, 'path' => $packageFileInfo->getPathname(), 'meta' => $meta, 'composerManifest' => $composerManifest);
            }
        }
        return $packagesData;
    }

Usage Example

Пример #1
0
 /**
  * Initialize the manager: read package information and register migrations.
  *
  * @return void
  */
 protected function initialize()
 {
     if ($this->packagesData !== null) {
         return;
     }
     $this->packagesData = Tools::getPackagesData($this->packagesPath);
     $this->migrations = array();
     foreach ($this->packagesData as $packageKey => $packageData) {
         $this->registerMigrationFiles(Files::concatenatePaths(array($this->packagesPath, $packageData['category'], $packageKey)));
     }
     ksort($this->migrations);
 }