container = $container; $this->metadata = $metadata; } public function run(array $options, array $flagList) { if (in_array('container', $flagList)) { $this->printContainerInfo(in_array('nameOnly', $flagList)); } } protected function printContainerInfo(bool $nameOnly = false) { $serviceList = [ 'injectableFactory', 'config', 'log', 'fileManager', 'dataManager', 'metadata', 'user', ]; $fileList = scandir('application/Espo/Core/Loaders'); if (file_exists('custom/Espo/Custom/Core/Loaders')) { $fileList = array_merge($fileList, scandir('custom/Espo/Custom/Core/Loaders')); } foreach ($fileList as $file) { if (substr($file, -4) === '.php') { $name = lcfirst(substr($file, 0, -4)); if (!in_array($name, $serviceList) && $this->container->has($name)) { $serviceList[] = $name; } } } foreach ($this->metadata->get(['app', 'containerServices']) ?? [] as $name => $data) { if (!in_array($name, $serviceList)) { $serviceList[] = $name; } } sort($serviceList); if ($nameOnly) { foreach ($serviceList as $name) { echo $name . "\n"; } return; } foreach ($serviceList as $name) { echo $name . "\n"; $obj = $this->container->get($name); echo get_class($obj) . "\n"; echo "\n"; } } }