Xpressengine\Plugin\PluginScanner::scanDirectory PHP Method

scanDirectory() public method

만약 특정 플러그인이 주어졌을 경우 주어진 플러그인의 정보만 수집한다.
public scanDirectory ( string $pluginId = null ) : array
$pluginId string 정보를 수집할 플러그인 아이디
return array
    public function scanDirectory($pluginId = null)
    {
        // scan plugin directory
        $directories = glob($this->pluginDirectory . '/' . ($pluginId ?: '*'), GLOB_ONLYDIR);
        if (count($directories) === 0) {
            if ($pluginId !== null) {
                throw new PluginNotFoundException(['plugin' => $pluginId]);
            } else {
                return [];
            }
        }
        $pluginInfos = [];
        foreach ($directories as $directory) {
            $id = basename($directory);
            if (strpos($id, '_') === 0) {
                continue;
            }
            $path = $directory . '/plugin.php';
            $pluginInfo = [];
            try {
                $pluginInfo['class'] = $this->getClassName($path);
            } catch (\Exception $e) {
                continue;
            }
            $pluginInfo['id'] = $id;
            $pluginInfo['path'] = $path;
            $pluginInfo['metaData'] = $this->metaFileReader->read($directory);
            $pluginInfos[$id] = $pluginInfo;
        }
        return $pluginInfos;
    }

Usage Example

 public function testScanDirectoryInvalidPluginFile()
 {
     $dir = __DIR__ . '/invalid_plugins';
     $reader = $this->getReaderMock($dir);
     $scanner = new PluginScanner($reader, $dir);
     $pluginsInfos = $scanner->scanDirectory();
     $this->assertEmpty($pluginsInfos);
 }
All Usage Examples Of Xpressengine\Plugin\PluginScanner::scanDirectory